float带来的问题
1.float: right 右浮动时,靠右换行(错行)的解决方法
描述:当非float的元素和float的元素在一起的时候,如果非float元素在先,那么float的元素将被排斥。把右浮动的标签放在正常标签的前面即可。
<div class="banner">
<div class="no-float"></div>
<div class="foat-r"></div>
</div>
![](https://img.haomeiwen.com/i3770183/7a55983aea2839e0.png)
解决:把右浮动的标签放在正常标签的前面即可。
<div class="banner">
<div class="foat-r"></div>
<div class="no-float"></div>
</div>
![](https://img.haomeiwen.com/i3770183/845f1705e6fa40ff.png)
2.浮动造成换行问题
描述:例子如:两个div设置了左浮动,想第三个div换行
(如果第三个也是左浮动,则宽度小于父元素剩余宽度的话,就不会换行;如果第三不是浮动等特殊情况,会覆盖第一个div位置,但文字不会覆盖而是环绕)
![](https://img.haomeiwen.com/i3770183/2fa8e9f61443d4ec.png)
解决:给第三div设置style="clear:both"
![](https://img.haomeiwen.com/i3770183/ad1a98cc8d55e6e9.png)
3.浮动会造成 父元素塌陷 问题。
如果一个父元素的所有子元素都是浮动的,子元素的浮动确定了自身位置,尽管子元素有高度,但是不会影响到父元素的高度,那么这个父元素高度就是0(若没有指的宽度,就是父元素宽度)。如果想要父元素内的浮动元素占有父元素的高度,就需要清除浮动。
![](https://img.haomeiwen.com/i3770183/70715058534390c6.png)
解决方法:
.parent:after {
content: " ";
display: block;
clear: both;
}
![](https://img.haomeiwen.com/i3770183/b561b7b52286ad7f.png)
还有两种不推荐的解决方法:
- 在具有浮动元素的父容器中置“overflow”的属性值为“hidden”
- 在容器的结束标签前添加一个空的div,在空div上直接设置样式“clear:both”
参考
网友评论