CSS项目中因浮动元素导致高度塌陷问题怎么办
Admin 2022-06-22 群英技术资讯 583 次浏览
浮动元素使其父元素高度塌陷我们经常会遇到一种情况,给一个元素设置浮动之后 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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在一次项目中,有一次要用到::selection伪元素,然后开发同学问我,CSS中一个冒号和两个冒号有神马区别?这好像真的是个问题,或许很多前端同学对此都有疑惑,查了些资料,证实了下两个符号的区别,简而言之:单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。W3C关于CSS3选择器的规范中有一段描述:Apseudo-elementismadeoftwocolons
css为什么放head里面?相信不少朋友对于这个问题会比较好奇,css不能和JavaScript一样写在body标签尾部吗?对此本文就与大家一起探讨一下css放body标签尾部会怎么样?以及css放head里面有什么优点?
这篇文章主要介绍了Html5让容器充满屏幕高度或自适应剩余高度的布局实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
很久没有研究css了,成天用各种框架也基本都不需要自己写,最近要做一个相册页面,碰到的第一个问题就是如何排布。先给出设计稿,然后再说说样式如何写分析一下,有一个容器,容器有padding,每一行的每一个item之间又有margin,首先想到的是这样.container{padding:10px;}.container.item{float:left;width:24%;margin-lef ...
这篇文章主要给大家分享CSS计数器的内容,可能一些朋友不是很了解CSS计数器是什么以及CSS计数器怎样使用,在下文小编会给大家详细的介绍CSS计数器及其用法,下面跟随小编一起来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008