CSS项目中因浮动元素导致高度塌陷问题怎么办
Admin 2022-06-22 群英技术资讯 321 次浏览
浮动元素使其父元素高度塌陷我们经常会遇到一种情况,给一个元素设置浮动之后 float:left/right;
,如果该元素的父元素有背景颜色,那么会发现父元素的背景颜色消失了;如果父元素有一个边框,那么浮动元素无法将边框撑开。
从以上两张图中可以看出添加浮动元素后,li元素按照规则横向排列,但是父元素却消失不见了。
为父元素添加一个5px的边框,在li元素添加浮动后,边框并没有被内容撑开。
在第一个示例中仿佛父元素消失了,但在第二个示例中发现其实父元素并没有消失,只是高度被计算为0。这就要回到浮动元素的特性来说明此问题“当元素设置浮动后,会自动脱离文档流”,翻译成白话就是说,元素浮动后,就不在整个文档流的管辖范围,那么它之前存在在父元素内的高度就随着浮动不复存在了,而此时父元素会默认自己里面没有任何内容(前提是未给父元素设置固定高度,如果父元素本身有固定高度,就不会出现这种情况)
解决方法:
1、给父元素也添加float
。这样让父元素与子元素一起脱离文档流浮动起来,保证子元素在父元素内,这样父元素就能自适应子元素的高度,但是此方法有一弊端,一定会影响父元素之后的元素排列,甚至影响布局。
2、给父元素一个固定高度,此方法适用于子元素高度已知并且固定的情况。
3、添加一个块级元素,并给此元素设置clear:both;
清除浮动。在很早之前用的就是这种解决办法,新建一个空的div,为这个div设置clear:both;这样无疑是增加了无意义的标签,一个大型页面中,这种标签太多是不好的。
4、给父元素添加 overflow:hidden;
【后有详解】
5、通过伪类::after清除浮动 【后有详解】
overflow:hidden;
::after 伪类
利用伪类来清楚浮动,其效果跟创建一个空的div并设置其为clear:both;是一样的,只不过这里用伪类代替了空的div元素
<div class="box"> <div class="son">我是浮动的子元素</div> </div>
.box { width:400px; background:#F00; } .son { float:left; } .son::after { content:""; clear:both;/*清除浮动*/ display:block;/*确保该元素是一个块级元素*/ }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了常见的浏览器兼容性问题(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在css中,可以利用width属性设置table元素的宽度为自适应宽度,该属性用于设置元素的宽度,当属性的值为“数值%”时,定义基于包含父元素宽度的百分比宽度,也即宽度随父元素宽度自适应,语法为“table{width:数值%;}”。
我们通常设置的宽度和高度,是指盒子模型中内容(content)的宽度和高度。元素的高度,还要加上上下padding和上下border,元素整个盒子的高度还要加上上下margin;宽度类似计算。注意:父子元素包含情况下的计算,父亲元素会把儿子元素的整个盒子(包括margin)的大小作为内容。外边距塌陷(margincollapse),块元素的top与bottom外边距有时
css清除浮动的原因:1、清除浮动是为了清除使用浮动元素的影响。高度塌陷的父元素。2、使用浮动后,子元素会脱离标准文档流,也就是说,父级元素中没有内容可以打开其高度,所以父级元素的height会被忽略。
canvas与svg都是可以在浏览器上创建图形,因此,在html5中感觉canvas和svg很相似,但是实际上canvas与svg有着根本的区别。下面php中文网通过比较canvas和svg之间的不同来给大家总结了关于canvas与svg的区别。一起来看一看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008