css的float,浮动
之前页面布局经常使用的是float+position,但是有个问题就是,给元素设置float会脱离文档流,就相当于是在页面中不再占有位置,只是飘在该位置上面。
原理与position类似。
页面效果:

期望效果:

实现代码:
1.html:
<div class="contrainer">
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
</div>
2.css:
.contrainer{
.div1{
background:#000080;
border:1px solid #ff0000;
// height:200px;
}
.div2{
background:#800080;
border:1px solid red;
height:100px;
margin-top:10px
}
.left{
float:left;
width:20%;
height:200px;
background:#DDD
}
.right{
float:right;
width:30%;
height:80px;
background:#DDD
}
}
正常页面应该是下面这个样子,
原因:
想要div1和div2垂直显示,div1下的两个div是并列显示的,因此设置了浮动,但是设置之后由于脱离了文档流,div2直接跳到上面了,div1及div1下的两个div撑不起来。
所以需要对其他元素设置清除浮动,取消设置的浮动所对其他元素带来的影响。
清除浮动原理:
就是需要实现虽然元素设置了浮动,但是还是需要占有自己的位置,不能脱离文档流。
清除浮动有哪些方式?比较好的方式是哪一种?
(1)父级div定义height。
(2)结尾处加空div标签clear:both。
(3)父级div定义伪类:after和zoom。
(4)父级div定义overflow:hidden。
(5)父级div定义overflow:auto。
(6)父级div也浮动,需要定义宽度。
(7)父级div定义display:table。
(8)结尾处加br标签clear:both。
(Q2) 比较好的是第3种方式,好多网站都这么用。

浙公网安备 33010602011771号