浮动、清除浮动

版权声明: https://blog.csdn.net/hemingyang97/article/details/82053879

浮动是什么?

float是css的定位属性,通过使用float这个属性可以实现元素的浮动

浮动对页面的影响:

如果一个父元素中有一个子元素,并且父盒子没有设置高,子盒子在父盒子中进行了浮动,那么将来父盒子的高度为0.由于父盒子的高度为0,下面的元素会自动补位,会导致父元素高度塌陷,所以这个时候要进行浮动的清除。

为什么父元素会崩塌?

当子元素设置了浮动的时候,子元素就会完全脱离文档流,此时会导致子元素无法撑起父元素的高度,导致父元素高度塌陷.

Example:

在示例中发现其实父元素并没有消失,只是高度被计算为0(父元素的高度为0,即父元素崩塌)。“当元素设置浮动后,会自动脱离文档流”,翻译成白话就是:元素浮动后,就不在整个文档流的管辖范围,那么它之前存在在父元素内的高度就随着浮动不复存在了,而此时父元素会默认自己里面没有任何内容(前提是未给父元素设置固定高度,如果父元素本身有固定高度,就不会出现这种情况)

 

 

清除浮动的几种方法?

ExampleOne

使用空标签clear:both清除浮动

原理:添加一个空div,利用css提供的clear:both清除浮动,让父级div能自动获取到高度

优点:简单,代码少,浏览器支持好,不容易出现怪问题

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,不便于操作

建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

 

ExampleTwo

使用overflow:auto/hidden清除浮动

原理:使用时不能定义height,因为浏览器会自动检查浮动区域的高度

优点:简单,代码少,浏览器支持好

Hidden缺点:不能和position配合使用,内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素

Auto缺点:内部宽高超过父级div时,会出现滚动条。

 

 

ExampleThree

设置父类高度清除浮动(已知子元素高度)

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题

优点:简单,代码少,容易掌握

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题

建议:不推荐使用,只建议高度固定的布局时使用

 

ExampleFour

使用after伪元素清除浮动

原理:IE8以上和非IE浏览器才支持:,zoom(IE专有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好,不容易出现怪问题(目前大型网站都有使用,如:网易,新浪等)

缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持

建议:推荐使用,建议定义公共类,以减少CSS代码

 

 

猜你喜欢

转载自blog.csdn.net/hemingyang97/article/details/82053879