【问题标题】:Vertical and horizontal alignment of <li> within a fluid navbar in a table cell<li> 在表格单元格的流体导航栏中的垂直和水平对齐
【发布时间】:2014-08-21 09:01:42
【问题描述】:

目标

我想要实现的是让我的&lt;nav&gt;s 链接居中(垂直和水平),我的&lt;nav&gt;s 链接有一个可以包含文本的定义的液体宽度,我的&lt;nav&gt; 元素是液体并扩展以满足&lt;li&gt;s 的需求。

尝试

我在固定导航栏中将&lt;li&gt;s 垂直居中,但现在文本从单元格中溢出,我希望单元格扩展以适应其中的文本。

HTML

<nav id="page-nav">
  <ul>
    <li>
      <a href="#about-us">About Us</a></li>
    <li>
      <a href="#connect">Connect</a>
    </li>
    <li>
      <a href="http://example.org/" target="_blank">Blog</a>
    </li>    
  </ul>
</nav>

CSS

#page-nav {
  height: 100%;
  margin-right: 5%;
  float: right;
}

#page-nav ul {
  height: 100%;
  width: 100%;
  margin: 0%;
  padding: 0%;
  display: table;
  text-transform: uppercase;
  font-size: 125%;
  color: #4a4a4a;
  white-space: nowrap;
}

#page-nav li {
  height: 100%;
  padding: 0% 2%;
  display: table-cell;
  vertical-align: middle;
}

#page-nav a {
  transition: 0.2s ease;
}

#page-nav a:hover {
  color: #fff;
}

【问题讨论】:

  • 是的,这正是我的意思,我注意到我对代码“宽度:20%;”犯了一些小错误不应该出现在#page-nav 中,抱歉,这是我的实验代码。抱歉没有早点回来!
  • 我还想对缺少某些细节表示歉意,再次感谢您的时间和帮助!
  • 通过JS听说过,但没做过
  • 您应该尽量避免使用 ID 进行样式设置,因为您创建的选择器特异性战争。不过,ID 非常适合使用 JS 和 jQuery 选择内容。

标签: html css navigation vertical-alignment


【解决方案1】:

尝试更改您的 #pagenav CSS:

#page-nav {
  text-align: center !important;
  height: 100%;
  float: none;
}

如果我了解您想要的内容,那应该将其全部集中在一行中。

【讨论】:

  • 我试过了,无序列表被移到下面一行,列表项分布在整行之间,不过还是谢谢你的帮助!
【解决方案2】:

如果我理解正确,您主要关心的是垂直和水平居中。我在 CodePen 上添加了一些颜色用于演示目的,它产生了这个

要使文本垂直居中,只需将&lt;li&gt; 的line-height 设置为等于&lt;ul&gt; 的高度,并使包含的&lt;nav&gt; 具有height: auto;。但不要为此使用表格。

然后将你的文本水平居中给你的&lt;li&gt; 一个text-align: center; 的规则来居中。

这里是一个例子,根据自己的需要修改

#page-nav {
  /* you can set the height of container to auto */
  height: auto;
  width: 20%;
  margin-right: 5%;
  float: right;
}

#page-nav ul {
  /* modify to your height */
  height: 2em;
  width: 100%;
  margin: 0%;
  padding: 0%;
  text-transform: uppercase;
  font-size: 125%;
  color: #4a4a4a;
  white-space: nowrap;
}

#page-nav li {
  height: 100%;
  padding: 0% 2%;
  /* use inline-block instead */
  display: inline-block;
  /* set line height equal to its parents height */
  line-height: 2em;
  /* Center your text inside the li */
  text-align: center;
  vertical-align: middle;
}

【讨论】:

  • @Christina 我认为您的意思是将这些问题留给 cmets。不是我的答案?
  • 感谢您的宝贵时间和回复,抱歉没有早点回复。我现在正在尝试,会让你知道锻炼的效果!再次感谢!
猜你喜欢
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多