CSS项目中因浮动元素导致高度塌陷问题怎么办
Admin 2022-06-22 群英技术资讯 850 次浏览
这篇文章将为大家详细讲解有关“CSS项目中因浮动元素导致高度塌陷问题怎么办”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。浮动元素使其父元素高度塌陷我们经常会遇到一种情况,给一个元素设置浮动之后 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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
css3的focus-within选择器怎样使用?在css中 :focus-within 是一个伪类,但是现在已经被列入到css选择器中,而focus-within选择器其实非常的好用,能非常方便处理获取焦点状态。接下来我们就详细的了解一下focus-within选择器。
这篇文章给大家分享一下时间轴timeline控件的使用,时间轴控件还是比较实用的,能轻松的实现时间线的效果,那么具体怎样用的,下文给大家分享了用时间轴timeline控件实现垂直的时间线效果,感兴趣的朋友可以参考。
css降低背景透明度的方法:1、使用opacity属性,只需要给背景元素设置“opacity: 透明度值;”样式即可;2、使用filter属性,只需要给背景元素设置“filter: opacity(透明度值);”样式即可。
在css中,可以利用“:nth-child(n)”选择器来选择div下的第几个p元素,该选择器的作用就是选择父元素下的第n个子元素,语法为“div p:nth-child(n){css样式代码;}”。
这篇文章主要介绍了前端实现背景虚化但内容清晰且自适应 的实例代码,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008