html导航栏清除浮动,CSS清除浮动带来影响方法

清除浮动本质

清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。

清除浮动的本质是清除浮动带来的影响,而不是把浮动属性删除掉

正常情况下父元素是在不设置高度的情况下高度是由于父元素的子元素撑开的,但是子元素浮动后,就会脱标,不占用位子,这样与父元素平级的元素就会跑上来。

aed8bdd347b23fddf2aeabe6a947139d.png

(子盒子是标准流,父盒子虽然没有高度,但是可以撑开父盒子高度,下面盒子会正常排列)

子盒子浮动以后,子盒子就会脱标,不占据高度,不会撑开盒子,并且父盒子因为没有设置高度,所以高度就变成0了,下面的盒子就会移动上去

995f56b63b9d2d2ef86bc86922c0e4c1.png

清除浮动方法:

一、给浮动元素的父元素设置固定的高度

给父元素设置高度,让父元素高度撑开,后面元素就不会被压倒浮动元素的下面了;但是一般不使用该方法,因为父元素一般都是不设置宽度,让子元素撑开其高度。

二、父级添加overflow属性方法(推荐使用)

overflow : hidden ;

优点: 代码简洁

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

三、额外标签法

额外标签法,是w3c推荐的一种方法,在最后一个浮动的元素之后,加上一个空的”块级”元素,比如div,接着设置这个div元素的样式属性clear:both 例如

四、使用after伪元素清除浮动(强烈推荐使用)

::after 方式为空元素额外标签法的升级版,有点类似额外标签法,好处是不用单独加标签了

.clearfix::after{

content:'.';/*加.是为了解决某些浏览器不识别*/

display: block;/*因为这个伪元素是一个行内元素,而清除浮动要用块级元素*/

visibility:hidden;/*隐藏内容,但是还占据位置,就像一个人穿了隐形衣服*/

height:0;/*为了将伪元素的高度去掉*/

line-height: 0;/*解决一些浏览器兼容问题*/

clear:both;/*清除浮动*/

}

.clearfix {

*zoom:1; /*为了解决IE6,IE7兼容问题*/

}

五、使用before和after双伪元素清除浮动(推荐使用)

.clearfix::before,.clearfix::after{

content:" "; /* 因为使用了伪元素,所有需要配合content使用 */

display: table; /* 将伪元素的显示方式转成table的方式 */

}

.clearfix:after,.clearfix:before{

clear:both; /* 清除浮动 */

}

.clearfix{

*zoom:1; /*为了解决IE6,IE7兼容问题*/

}

优点: 代码更简洁

缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值