下面是标题内的菜单。 ul和li元素是浮动的,现在浮动在标题下面,我试图用它清除:两者。但是,这似乎没有用,所以我想知道......有什么不对的?
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;
}
答案 0 :(得分:11)
您可以使用clearfix:
.clearfix:after {
clear:both;
content:".";
display:block;
height:0;
line-height:0;
visibility:hidden;
}
并将其应用于ul和标题。
答案 1 :(得分:2)
更好的css适合你的情况(在FF,Chrome,IE6 +中测试)
header {
display: block; /* Necessary for older browsers to render this html5 element properly */
background: #888;
height: 20px;
padding: 10px;
}
ul {
margin: 18px 0;
padding: 0;
list-style: none;
}
ul li {
margin: 0 10px 0 0; /* at least some margin-right is necessary to make inline-block work in IE */
padding: 0 5px; /* you don't have to set a width any longer, so let padding define spacing */
display: inline-block;
zoom: 1; /* part 1 of the IE hack to make inline-block work */
*display: inline; /* part 2 of the IE hack to make inline-block work */
/* height and line-height not necessary - driven by a element below */
border: 1px solid #000;
background: red;
}
ul li a {
display:block;
height: 20px;
line-height: 20px; /* this will vertically center the text in the li */
text-decoration: none;
text-align: center;
}
ul li a:hover{
color: #fff;
background-color: #000;
}
答案 2 :(得分:2)
也许您可以尝试使用html5boilerplate中的标准clearfix,而不是使用cleardiv?
以下是修改后的标记:
<header class="clearfix">
<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>
</header>
这里是要添加的CSS:
.clearfix:before,
.clearfix:after {
content: " "; /* 1 */
display: table; /* 2 */
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
来自文档:
.clearfix
将.clearfix添加到元素将确保它始终完全包含其浮动的子元素。这些年来,clearfix hack有很多变种,还有其他的hacks也可以帮助你包含漂浮的孩子,但HTML5 Boilerplate目前使用micro clearfix。
答案 3 :(得分:1)
您不能将/>
用于div。将其从<div class='clear'/>
更改为<div class="clear"></div>
或者尝试在当前的li之下添加另一个li并给出明确的类。
<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>
<li class='clear'></li>
</ul>
</header>