高度塌陷的产生条件和解决方法

高度塌陷产生的原因:
高度塌陷: 当所有的子元素浮动的时候,且父元素没有设置高度,这时候父元素就会产生高度塌陷。
例如:
.father{
width: 600px; /* 给父元素一个宽度 */
background-color: #008000; /* 给个背景颜色 */
}
.child_1{
width: 200px;
height: 200px;
background-color: #00FFFF;
float: left; /* 子元素浮动 */
}
.child_2{
width: 200px;
height: 200px;
background-color: #0000FF;
float: left; /* 子元素浮动 */
}
运行之后如此:

可以看到父元素已经高度塌陷。
原因:因为子元素浮动之后,这些子元素就不占用浏览器的位置和空间。
高度塌陷的解决方法:
1.给父元素添加一个固定高度
这里我们给父元素添加一个height:300px;然后我们在运行看看。

这时候我们可以看到高度塌陷问题就解决了,但是这种解决方法只适合高度固定的布局,不建议大家用这种方法。
2.给父元素添加overflow:hidden;zoom:1;
Zoom:1;是针对IE6浏览器的兼容。

我们会发现我们解决了塌陷问题并可以让高度自适应。但这种解决方法会对溢出的内容进行隐藏裁剪不显示,适合没溢出时使用。
3.给最后一个浮动元素的后面添加一个空标签,并声明clear:both;height:0;overflow:hidden;
添加height:0;和overflow:hidden;是为了防止加的空标签为li,并且在IE6和IE7浏览器上li会有默认高度撑着。

这样也会解决高度塌陷问题,但是加入了空标签,会造成代码的冗余。
4.万能消除法(建议大家使用这种方法)
给塌陷的元素添加伪对象
例如:.father:after{
content:“随便写”;
clear:both;
display:block;
height:0;
overflow:hidden;
visibility:hidden; /*visibility:hidden;为了隐藏content里的内容*
}

万能消除法建议大家使用这种方式去解决高度塌陷。
5.父元素也浮动
给父元素一个float:left;属性。

虽然这样也可以解决塌陷问题,但是由于让父元素浮动,可能会影响你的整个布局。
6.让父元素转为表
给父元素声明display:table;

父元转换为表格,影响页面美观。
7.给父元素添加overflow:auto/scroll;
这种方式也可以解决高度塌陷,但当子元素溢出时就会出现滚动条。

原文地址:https://www.cnblogs.com/bblove/p/12354236.html

时间: 2024-11-08 21:40:26

高度塌陷的产生条件和解决方法的相关文章

父元素高度比子元素高度多几个像素的解决方法

html代码: 1 <div> 2 <textarea></textarea> 3 </div> 其中textarea元素的高度为80px,而它的父元素div高度为84px,为什么会多出4px呢? 解决方法是: 1.设textarea为 display: block;

CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8&q

高度自适应不能触发transition的解决方法

1. 前言  在我们不能确定一个元素的高度的时候,要使用transition过渡,是不会触发的,比如一个p标签 内容行数不固定  我们可能就要初始 height: 0 ; 过渡到 height: auto ;  写完发现并不能实现 . 可过渡的样式 不是所有的CSS样式值都可以过渡,只有具有中间值的属性才具备过渡效果 Vstart = 开始值; Vend = 结束值; Vres = 中间值; p = 过渡函数的输出值 Vres = (1 - p) * Vstart + p * Vend 当Vre

(总结)Nginx 502 Bad Gateway错误触发条件与解决方法

一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现.以下是从Google搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的.这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在

死锁产生的条件以及解决方法

本文主要讲为什么会产生死锁?如何避免以及发生死锁该如何恢复死锁? 产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用.(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放.(3) 不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺.(4) 环路等待条件:若干进程之间形成一种头尾相接的循环等待资源关系.只要系统发生了死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁. 1.预防死锁预防死锁的发生只需破坏死锁产生的四个必要条件之一即

input的onchange事件实际触发条件与解决方法

nput中onchange事件已经属于元老级别了,并且现在同onclick一样使用频率很高,然而onchange的机制实际上有很多童鞋并不清楚,我们通过实例来分析这个事件的特征. 触发onchange 首先页面有一个input标签,并且已绑定onchange事件,如: <input type="text" onchange="console.log(this.value);" /> 这个事件要做的动作很简单,只是把input的值在控制台上打印出来就好.效

css float父元素高度塌陷

css float父元素高度塌陷 float 使父元素高度塌陷不是BUG,反而是标准. float 原本是为了解决文字环绕才出现的. 当然有的时候要解决高度塌陷的问题 以下几个方法可以解决float 父元素高度消失/塌陷的问题 .clearfix:after{content:'';display:block;height:0;overflow:hidden;clear:both;} .clearfix {*zoom:1} 更好的方法是 .clearfix:after{content:'';dis

解决父级元素高度塌陷问题的方法

如果父元素只包含浮动元素,且父元素未设置高度和宽度的时候.那么它的高度就会塌缩为零,也就是所谓的“高度塌陷”,如果父级元素包含背景或者边框,那么溢出的元素就不像父级元素的一部分了.解决“高度塌陷”的问题很简单: 1.浮动父级元素 如果让父级元素浮动,父级元素的高度就会扩大,直到完全包含它里面的浮动元素,虽然这个方法很奇怪,但是很有效.如果选择这种方法,一定要在该元素的下个元素添加clear:both,确保浮动元素落到父级元素的下方. 2.利用overflow:hidden,zoom:1 { ov

解决高度塌陷的方法

我们在进行页面布局的时候可以发现元素在脱离文档流后,就会出现高度塌陷问题. 众所周知高度塌陷的原因是因为子元素脱离文档流所造成的父元素塌陷(所谓的高度塌陷就是子元素和父元素不在一个层级,未设置高宽的父元素里面没有子元素的支撑就会塌陷)会影响页面布局和美观性. 以下提出几点解决方案 首先我们先引出一个概念:Block Fomatting Context,我们称为块格式化上下文 简称BFC,这是每个元素都具有的一个属性! 开启BFC的元素都有以下特点: 1.开启了BFC的元素与其父元素的垂直外边距不