【发布时间】:2020-07-08 15:19:54
【问题描述】:
下面是标题内的菜单。 ul 和 li 元素是浮动的,现在浮动在标题下方,我试图通过 clear:both 来防止这种情况。但是,这似乎不起作用,所以我想知道......有什么问题?
html:
<header>
<ul>
<li><a href='#'>Item 1</a></li>
<li><a href='#'>Item 2</a></li>
<li><a href='#'>Item 3</a></li>
<li><a href='#'>Item 4</a></li>
</ul>
<div class='clear'/>
</header>
css:
header {
background: #888;
height: 20px;
padding: 10px;
}
ul{
margin: 18px 0;
padding: 0;
list-style: none;
}
ul li{
margin: 0 10px 0 0;
padding: 0;
display: block;
float: left;
width: 80px;
height: 20px;
border: 1px solid #000;
background: red;
}
ul li a{
display:block;
width: 100%;
height: 100%;
text-decoration: none;
float: left;
text-align: center;
padding-top: 2px;
}
ul li a:hover{
color: #fff;
background-color: #000;
}
.clear {
clear:both;
}
【问题讨论】:
-
你想在这里完成什么?那个 div 是空的,那么把它放在 header 里有什么意义呢?
-
问题是
lis 也是浮动的。 -
不是一个答案,但我总是觉得在容器上使用
overflow: hiddenhack 感觉更好。 -
您可能想在这里放弃
float的概念。有一种很好的方法可以让display: inline-block工作(即使在旧的 IE 浏览器中)并通过更好、更简单的代码实现您想要的。 @PeeHaa 是对的——如果你要漂浮,overflow: hidden是一个更好的方法来强制容器包裹漂浮物。 -
@PeeHaa - 这很老套。完全同意。这就是为什么我们都喜欢旧的 IE 浏览器......