这是以下 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/