CSS 父级元素高度为 0 解决方案

CSS 中父级元素的高度一般由子元素撑开,不会特意设置高度,但是以下情况会造成父级元素高度坍塌,也就是高度为零,影响后面元素的排版。

  1. 子元素使用绝对定位
  2. 子元素浮动

针对第一种情况,即子元素使用绝对定位,可以使用以下方案:

  • 子元素的绝对定位改为相对定位,如果可以改的话

针对第二种情况,即由子元素浮动造成父元素坍塌,可以使用以下方案:

  1. /*父级元素绝对定位*/
    position: absolute
  2. /*父级元素添加*/
    overflow: hidden;
  3. /*伪元素清除浮动造成的影响*/
    .clearfix::before,.clearfix::after {
                content: "";
                display: block;
                height: 0px;
                line-height: 0px;
                clear: both;
                visibility: hidden;
            }
    /*清除兄弟元素,添加空元素添加样式*/
    <div class="dad">
        <div class="son"></div>
        <div style="clear: both"></div>
    </div>

原文地址:https://www.cnblogs.com/guotaodexiaoheiban/p/8971282.html

时间: 2024-08-29 03:02:05

CSS 父级元素高度为 0 解决方案的相关文章

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

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

float浮动后,父级元素高度塌陷和遮盖问题

当子元素不浮动的时候,父元素的高度是由子元素撑起来的. 子元素A和B是两个div,独占一行 效果如图: 当子元素B浮动起来之后,父元素高度塌陷到只剩子元素A的高度 效果如图: 当给子元素A(div)设置CSS属性:display:inline 后,A的宽高将不起作用,宽高由内容撑开,即被字母A撑开.此时父级元素高度没有塌陷到和A一样,而是和B的高度一样 效果如图: 当子元素A和B同时浮动起来之后,A的CSS属性:display:inline失效,效果为float的效果,同时父级元素的高度彻底塌陷

关于多子级元素充满父级元素高度的布局方式

关于多子级元素充满父级元素高度的布局方式,听着有些绕口,上个图应该就能很清楚的理解这标题的意思了: 如图:左右分栏的情况下,有顶部和底部导航,且在屏幕高度不定的时候(移动端,多设备适配),如何不适用js来让内容区自适应扩展,填满父级剩下的高度呢? 首先分两种情况: 一.顶部和底部导航为固定高度时,这种情况挺常见的,也是相对比较简单的一种情况: 方法1:使用box-sizing: border-box; 配合 height: 100%; 和上下padding来达到全屏侧边的效果: <!DOCTYP

float浮动问题:会造成父级元素高度坍塌;

解决办法:清除浮动:clear:both; 给父元素高度:height(不是很可取) 给父元素:display:inline-black:(问题:margin:auto失效) 给父元素:overflow:hidden;( 在IE67需要有宽度); 给父元素添加伪类;:after{content:""; display:block:clear:both;} (万能)

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

子元素浮动,父元素高度为0现象解释和原理浅见

有的人在写页子的时候常常会碰见这样的一个问题,就是有一个父级的div下面有子元素,子元素浮动起来后,父元素的高度变成0,撑不起来父级了. 现在先不说解决办法,先说下float属性,float定义:float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.(摘自:w3c). 从定义看出,其实float属性一开始是被应用与图片,来形成文字环绕效果的,任何的元素只要定义了float属

子元素浮动,父级元素为0怎么解决

当子元素浮动时无法撑开父元素,父元素高度为0.这时可以通过在浮动的子元素后清除浮动来使父元素获得正确的高度. 1.  额外标签法 这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器.这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签. 2. 使用after伪类 这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容.经常的做法就是添加一个"点",因为它比较小不太引人注意.然后我们再利用它来清

子元素设置浮动样式,父元素高度为0

子元素如果设置了浮动样式,那么它就会脱离文档流,从而导致父元素高度变成0,当然不能说这是一个Bug,float的出现的初衷就是为了实现文字环绕图片来实现图文混排和流式布局,所以只能说这种情况只能是由于浮动样式的特性决定的. 测试用例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

CSS清除浮动使父级元素展开的三个方法

点评:一个没有设置高度的容器div内如果存在浮动元素(即使用了属性float:left或者float:right),那么该父级元素会无法展开,下面举个例子为大家详细介绍下,希望对大家有所帮助 一个没有设置高度的容器div内如果存在浮动元素(即使用了属性float:left或者float:right),那么该父级元素会无法展开. 举个例子,有一个div容器,div容器里有两个小容器,分别向左和向右浮动,为了区别这三个容器,分别设置了不同颜色的边框. 复制代码 代码如下: <html> <h