浮动元素造成的问题及解决方案,这么基础的问题都答不好吗?

文章介绍了浮动元素在布局中可能引发的父元素高度坍塌问题,以及四种防止这种问题的解决方案,包括:父元素浮动、设置overflow:hidden、添加空子元素并设置clear:both,以及使用CSS伪元素。其中,使用伪元素清除浮动被认为是最佳方案,因为它不影响布局且不增加额外元素。
摘要由CSDN通过智能技术生成

前言

元素浮动在平时还蛮经常用到的,关于浮动造成的问题以及解决方法面试时问到的频率也挺高,但是有些小伙伴最近要面试又懒得总结或者总结的不全,下面我总结了一波,希望对你们有所帮助。

浮动造成的问题及解决方法

问题

元素使用浮动或导致父元素高度坍塌
什么是高度坍塌?
答:父元素的高度,都是有内部的浮动子元素的高度撑起来的,子元素浮动起来,不占用普通文档流,导致父元素的高度失去支撑,从而父元素高度为0或者小于原有的高度;
即使有部分元素留在普通文档流中支撑着父元素,如果浮动元素的高度大于留下的元素,那么浮动元素的高度会超出父元素的边框,用户体验会大打折扣。

解决方法

不好的解决方案:给父元素固定的高度;
缺点:多数情况下,父元素高度由内容撑起,所以很难提前固定父元素的高度;
所以出现了以下的解决方案:
防止父元素高度坍塌一共有以下四种解决方法:

  1. 父元素也浮动;
  2. 父元素设置overflow:hidden;
  3. 给父元素末尾追加一个空子元素(块级元素),并设置clear:both,空子元素清除浮动影响;
  4. css为父元素末尾添加伪元素样式并设置clear:both(清除浮动),高度设置为0,内容设置为空,设置为块级元素(父元素::after{content:‘’;diaplay:‘block’;height:0;clear:‘both’})(4个里最完美的解决方案哦)。

分析一波

第一种方法:缺点:父元素浮动,会产生新的浮动影响;虽说可以解决高度坍塌问题,但是,这会改变父元素本身状态,整体会失去文档流,失去占位,所以后面的其他平级元素就会上移,被父元素挡住了,后面的元素可以设置clear:both,清除所有的浮动,但是总归还是感觉不太好,因为有些麻烦,影响他人了,自身状态也变了。
第二种方法缺点:父元素设置了overflow:hidden,但是里面的有的子元素在某种情况下不想隐藏肿么办?比如:

image.png
第三种方法:
给父元素末尾追加一个空子元素(块级元素),并设置clear:both,空子元素清除浮动影响;
原理:利用clear:both属性和父元素必须包含非浮动元素两个原理;
缺点:无端多出个无意义,看不见的元素,影响选择器和查找元素
第四种方法:
css为父元素末尾添加伪元素样式并设置clear:both(清除浮动),高度设置为0,内容设置为空,设置为块级元素;
优点:既不会影响显示影藏,又不会影响查找元素,又不会产生新的浮动问题,完美解决以上三种方法的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值