html - block 级元素行为

标签 html css

这是以下 HTML/CSS。

li {
  float: left;
  background-color: #BD4932;
}

li a {
  display: block;
  padding: .5em 1em;
  color: #FFFAD5;
}
<h1>Dynamic horizontal centering</h1>
<h2>With <span class="orange">display:table</span></h2>
<nav role='navigation' class="nav-table">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Clients</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

结果:http://codepen.io/anon/pen/LVeBGv

我的理解是 block 级元素强制后续元素换行。为什么 display: block; 不将列表项换行?

最佳答案

不, block 级元素默认占据其父元素的 100% 宽度。不会将下一个元素插入新行。您的 anchor 父项(列表项) float 到左侧,这意味着它的宽度只会与其内容一样宽。

如果您希望 anchor (和列表项)移动到下一行,则从 li 中删除 float: left

li {
  /*float: left;*/
  background-color: #BD4932;
}

li a {
  display: block;
  padding: .5em 1em;
  color: #FFFAD5;
}
<h1>Dynamic horizontal centering</h1>
<h2>With <span class="orange">display:table</span></h2>
<nav role='navigation' class="nav-table">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Clients</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

或添加 clear: both 到它:

li {
  float: left;
  clear: both;
  background-color: #BD4932;
}

li a {
  display: block;
  padding: .5em 1em;
  color: #FFFAD5;
}
<h1>Dynamic horizontal centering</h1>
<h2>With <span class="orange">display:table</span></h2>
<nav role='navigation' class="nav-table">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Clients</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

关于html - block 级元素行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118249/

相关文章:

javascript - 在 jQuery 中实现 CSS

html - Firefox 忽略表格单元格中的绝对定位

jquery - 不允许我的 Jquery 代码执行的链接

css - 不使用 `overflow:hidden` 如何创建两个水平相邻的 div,其中 div2 占用 div1 剩余的宽度空间

javascript - jQuery:在页面中心保留一个div,即使页面向下滚动

html - 在image的 `w`中解释 `srcset`

javascript - 为什么我的导航栏在小屏幕上滚动时会向右移动一点?

css - 如何通过 CSS 中的悬停选择器更改 JFXButton 中的 Font Awesome 字形颜色?

Jquery 如果 css 值不起作用

javascript - 使用 jQuery 动态更改元标记