一:什么是浮动
浮动是脱离文档的普通流存在的(可以看作是漂浮在普通流上),它可以左右浮动,直到它的外边缘遇到包含框或者另一个浮动框为止(即浮动框不在文档普通流中,所以在布局的时候文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会自动伸高来闭合浮动元素)。
二:闭合浮动
正式因为这种浮动的这种特性,所以本该属于普通流中的元素浮动之后,,包含框的高度就可能会发生变化(包含框内部由于不存在其他普通流元素了,表现出的高度就为0),在实际应用中,这会严重影响到我们布局,所以我们需要闭合浮动,使其包含框表现出正常的高度。
三:清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)?
很多人都已经习惯称之为清除浮动,但是确切地来说是不准确的。我们应该用严谨的态度来对待代码,也能更好地帮助我们理解开头的三个问题。
1)清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left | right | both | none;
2)闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。
其实我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,在footer上设置clear:both清除浮动并不能解决wrap高度塌陷的问题。
用闭合浮动比清除浮动更加严谨
四:清除浮动方法
1、在浮动元素末尾添加一个空div,例如< div style=”clear:both”></div>
2、父级div定义 overflow: hidden;
3、对父级元素设置合适的高度;
能够详细计算出实际高度,否则容易布局混乱
4、对父级元素设置浮动
5、对父级元素设置伪元素,即:after;
.aa:after {content:".";display:block;height:0;clear:both;visibility:hidden; }
1) display:block 使生成的元素以块级元素显示,占满剩余空间;
2) height:0 避免生成内容破坏原有布局的高度。
3) visibility:hidden 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互;
4)通过 content:"."生成内容作为最后一个元素