html - 水平导航栏中的文本(使用 ul 和 li)未垂直居中

标签 html css navbar

更新 在仔细研究之后,我找到了一种方法,将 span 文本替换为 div,然后设置它风格:

.navItem div {
    display: inline-block;
    vertical-align: middle;
}

虽然不确定这是否是最好的方式......一切都感觉很乱


我一直在尝试创建这个导航栏,但我遇到了一个问题,其中的文本没有完全垂直居中:

enter image description here

    .navBar {
        list-style-type: none;
        margin: 0;
        padding: 0;
        overflow: hidden;
        height:54px;
        background-color: #DADADA;
        color: white;
    }
    
    .navItem {
        display: inline;
        float: left;
        color: rgb(29, 29, 29);
        font-size: 14px;
        height: 54px;
    }
    
    .navItem a {
        display: block;
        height: 54px;
        padding-left: 10px;
        color: rgb(29, 29, 29);
        text-align: center;
        vertical-align: middle;
        cursor: pointer;
        transition: color .25s, background .25s;
        text-decoration: none;
    }
    
    .navItem img {
        vertical-align: middle;
    }
    
    .navIcon {
        height: 34px;
        width: 34px;
        padding-top: 10px;
        padding-bottom: 10px;
    }
      <ul class="navBar">
        <li class="navItem">
          <a>
            <img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
            <span>About</span>
          </a>
        </li>
        <li class="navItem">
          <a>
            <img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
            <span>Updates</span>
          </a>
        </li>
      </ul>

我也知道我的 CSS 可能看起来很有趣。它包含来自至少 3 个不同来源的关于如何创建水平导航栏的文章。

我在栏中将图标居中时遇到了问题,所以您可以看到我只是手动向图标添加填充以强制其居中。

vertical-align: center 什么都没做

最佳答案

这是一个更清晰的版本,包括 CSS 和 HTML。当您有一个非常好的选择器(可能应该是一个 ID,但这是另一个问题)作为基础时,没有理由在内部元素上使用类。它还使用可变大小,因此即使人们不完全使用您希望他们用于缩放、大小等的内容,它也能正常工作。

.navBar {
        list-style-type: none;
        margin: 0;
        padding: 0;
        overflow: hidden;
        height:3.5em;
        background-color: #DADADA;
        color: white;
    }
    
    .navBar li {
        display: inline-block;
        color: rgb(29, 29, 29);
        font-size: 0.9em;
        margin: 0.2em;
    }
    
    .navBar li a {
        display: block;
        padding-left: 0.8em;
        color: rgb(29, 29, 29);
        text-align: center;
        cursor: pointer;
        transition: color .25s, background .25s;
        text-decoration: none;
    }
    .navBar li img {
        height: 2.5em;
        width: 2.5em;
      vertical-align: middle;
    }
.navBar li span {
  line-height: 3.5em;
  margin-left: .5em;
  }
<ul class="navBar">
        <li>
          <a>
            <img src="http://image.flaticon.com/icons/svg/297/297562.svg"><span>About</span>
          </a>
        </li>
        <li>
          <a>
            <img src="http://image.flaticon.com/icons/svg/297/297562.svg"><span>Updates</span>
          </a>
        </li>
      </ul>

关于html - 水平导航栏中的文本(使用 ul 和 li)未垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325133/

相关文章:

html - 带 float 的水平导航栏 :left;none;right items

javascript - 如何使用 Bootstrap 显示另一个导航栏而不是下拉菜单

html - 几乎垂直居中对齐

javascript - 缺少 XML 节点

html - CSS - 由于 ul 基本填充,对象被压到一边

html - 如何使下面的用户界面完全响应

css - 防止导航栏菜单换行

jquery - 将鼠标悬停在父 Bootstrap 上时,会显示导航栏中的子菜单下拉菜单

javascript - 查找选项 jQuery 不工作(我用错了)

javascript - HTML 和 JS : surrounding every word in the document with a <span> tag