清除浮动的方法以及各自的优缺点
1、父级div定义height
<style>
ul li {
list-style: none;
}
.box1 ul li {
float: left;
100px;
height: 50px;
background-color: brown;
margin-left: 20px;
text-align: center;
line-height: 50px;
}
.box1 {
height: 50px;
}
</style>
<body>
<div class="box1">
<ul>
<li>html</li>
<li>css</li>
<li>JavaScript</li>
<li>jQuery</li>
</ul>
</div>
<div class="box2">
<ul>
<li>java</li>
<li>c++</li>
<li>c</li>
</ul>
</div>
</body>
</html>
原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题
- 优点:简单,代码少,容易掌握
- 缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
- 建议:不推荐使用,只建议高度固定的布局时使用
2、结尾处加空div标签clear:both
<style>
ul li {
list-style: none;
}
.box1 ul li {
float: left;
100px;
height: 50px;
background-color: brown;
margin-left: 20px;
text-align: center;
line-height: 50px;
}
.clear {
clear: both;
}
</style>
<body>
<div class="box1">
<ul>
<li>html</li>
<li>css</li>
<li>JavaScript</li>
<li>jQuery</li>
</ul>
</div>
<div class="clear"></div>
<div class="box2">
<ul>
<li>java</li>
<li>c++</li>
<li>c</li>
</ul>
</div>
</body>
</html>
原理:添加一个空div,利用css的clear:both清除浮动,让父级div能自动获取到高度
- 优点:简单,代码少,浏览器支持好,不容易出现怪问题
- 缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不爽
- 建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法
3、父级div定义overflow:hidden
<style>
.test{
border: 2px solid yellow;
height: 400px;
overflow: hidden;
}
.d1 {
300px;
height: 300px;
background-color: pink;
float: left;
}
.d2 {
200px;
height: 1000px;
background-color: orange;
float: left;
}
}
</style>
<body>
<div class="test">
<div class="d1"></div>
<div class="d2"></div>
</div>
</body>
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
- 优点:简单,代码少,浏览器支持好
- 缺点:不能和position配合使用,因为超出的尺寸的会被隐藏
- 建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用
4、父级div定义overflow:auto
<style>
.d1 {
200px;
height: 100px;
border: 2px solid #ccc;
overflow: auto;
}
</style>
<body>
<div class="d1">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos rem ipsam similique qui architecto aliquid reiciendis. Velit pariatur, quae vero molestiae ea architecto repellat modi aliquam, perspiciatis magnam, eius consectetur!
</div>
</body>
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度
- 优点:简单,代码少,浏览器支持好
- 缺点:内部宽高超过父级div时,会出现滚动条。
- 建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。