美文网首页前端种种
HTML 元素高度塌陷及解决办法

HTML 元素高度塌陷及解决办法

作者: BitMonkey | 来源:发表于2019-03-17 10:14 被阅读38次

首先了解下什么是高度塌陷

  1. 作为前端开发者都知道,在HTML 中父元素在没有设置高度的时候,其默认高度是会被子元素撑开的,也就是子元素有多高,父元素就有多高,但当其所有子节点都浮动的时候,就会脱离文档流,此时父元素的高度就会丢失。如果在没有设置边框属性的情况下是比较难发现的,并会影响使布局变得混乱,达不到预期布局。
<body>
    <div class="parent">
        <div class="child child1"></div>
        <div class="child child2"></div>
        <div class="child child3"></div>
    </div>
    <div class="other"></div>
</body>

如上结构在class="parent" 的子元素没有设置浮动时的效果预期应该是如下所示的:


Screen Shot 2019-03-17 at 10.13.25 AM.png

此时父元素的高度是等于三个子结点撑开的高度。

当给class=“parent”的三个子div设置了float: left的时候,如下图所示,出现了页面布局混乱,而class="parent"的这个父div的height变成了0,它里面的三个子div是浮动排列的,而class="other"的这个div“跑到”它上面的元素的位置上去了,就好像它上面的元素都并不存在似的,这个就是“高度塌陷”问题了 。


Screen Shot 2019-03-17 at 10.21.35 AM.png

解决办法

想达到如下图所示的布局效果:


Screen Shot 2019-03-17 at 10.31.55 AM.png

1. 方法一

在class=“parent”元素内添加一个空的DIV标签,并设置如下CSS

.clear {
    clear: both;
}

缺点: 增加了无意义的标签。

2. 方法二

让父元素本身也浮动

缺点: 虽然可以撑开父元素,但会使父元素宽度丢失,而且导致下面的元素会上移,使与父元素相邻元素的布局受到影响。

3. 方法三

通过给父元素添加:after伪类, 最推荐的方法
给父元素添加如下CSS样式

.parent:after {

content: "."; /*生成内容作为最后一个元素,至于content里面是什么没有影响*/

display: block; /*使生成的元素以块级元素显示,占满剩余空间*/

height: 0; /*避免生成的内容破坏原有空间的高度*/

clear: both; /*闭合浮动*/

visibility: hidden; /*使生成内容不可见,并允许可能生成内容盖住的内容进行点击和交互*/

}

利用伪类来清除浮动,其效果跟创建一个空的div并设置其为clear:both;是一样的,只不过这里用伪类代替了空的div元素,不会影响任何其他样式,通用性强,覆盖面广。

相关文章

  • HTML 元素高度塌陷及解决办法

    首先了解下什么是高度塌陷 作为前端开发者都知道,在HTML 中父元素在没有设置高度的时候,其默认高度是会被子元素撑...

  • 清除浮动的几种常用方法

    父元素自适应宽高度,子元素浮动导致高度塌陷 高度塌陷: 示例图: HTML: CSS: 第一种解决方案: 通过给父...

  • 前端07day

    高度塌陷: 块元素默认父亲宽,高度由内容撑开父元素高度由子元素撑开浮动后塌陷 解决高度塌陷: BFC 1.父元素的...

  • 高度塌陷、清除浮动、元素垂直居中

    高度塌陷: 定义:父元素没有设置高度,子元素设置了浮动(float)属性解决办法:清除浮动(仅清除浮动的负面影响,...

  • 塌陷,导航,定位

    高度塌陷 块元素默认父亲宽,高度由内容撑开父元素高度由子元素撑开浮动后塌陷解决高度塌陷:BFC 1.父元素的垂直...

  • 高度塌陷

    高度塌陷 父元素撑起子元素的宽高度 但通过float设置子元素分离 这就是高度塌陷 BFC 设置模块的打开和关闭,...

  • 解决高度塌陷2

    为什么出现高度塌陷?当我们设置块级元素进行浮动的时候,会导致父元素塌陷,所以需要我们解决高度塌陷问题

  • 解决高度塌陷

    什么是高度塌陷:父元素不设置高和宽,由子元素把父元素撑起来,但是会发生高度塌陷问题。

  • 高度塌陷、BFC开启、去除项目符号

    高度塌陷:父元素由子元素高度撑开,但子元素浮动,脱离文档流,此时无内容支撑,父元素塌陷 BFC:块的格式化属性;默...

  • 高度塌陷 清除浮动 定位

    高度塌陷 父元素中的子元素浮动,导致父元素塌陷 开发中避免出现 写死父元素高度可以解决,但不能随子元素变化,不推...

网友评论

    本文标题:HTML 元素高度塌陷及解决办法

    本文链接:https://www.haomeiwen.com/subject/ljmymqtx.html