css--父元素塌陷

  当父元素内都是漂浮元素时,会造成父高度塌陷的问题。(因为等同于父元素内容为空,所以长,宽都等于空)

  我们想要的页面结构是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .son1{
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
        .son2{
            width: 100px;
            height: 100px;
            background-color: green;
            float: left;
        }
        .p2{
            width: 100%;
            height: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
<div class="p1">
    <div  class="son1"></div>
    <div class="son2"></div>
</div>
<div class="p2"></div>
</body>
</html>

父元素塌陷

  

  这时候,我们想既然父元素为空,导致了高度塌陷,那么就给父元素填充点文本内容。

<div class="p1">123
    <div  class="son1"></div>
    <div class="son2"></div>
</div>

  虽然黄色模块向下移动了,但是并没有达到我们想要的效果。我们想给父元素设置一个固定的长度和宽带。

<div class="p1" style="height: 100px;width: 100%">
    <div  class="son1"></div>
    <div class="son2"></div>
</div>

  看效果,已经达到我们预期了。但是这个解决方案真的好吗?答案明显是否定的。当悬浮模块大小发生改变时,我们需要再手动更改父元素的长宽,这十分不方便。

  这时候,我们想到了clear,他会让元素周边不会有悬浮元素,可以达到块标签的效果。

  我们需要先在父元素中创建一个空白块元素(div)。再给他设置clear属性。就可以达到效果了

<div class="p1">
    <div  class="son1"></div>
    <div class="son2"></div>
    <div style="clear: both"></div>
</div>
时间: 2024-10-08 06:27:44

css--父元素塌陷的相关文章

清除盒子内子元素浮动导致父元素塌陷的5种方法

更详细的解释请移动到: 地址1:http://www.cnblogs.com/chedabang/p/5973601.html 地址2:https://www.cnblogs.com/libin-1/p/5975367.html 盒子塌陷是什么? 何为盒子塌陷,盒子塌陷是由于子元素浮动导致的子元素脱离标准文档流,父元素无法获取子元素的高度而出现的一种现象. 盒子塌陷(如下): 盒子未塌陷(如下):   HTML/CSS代码 .... // css .box-wrapper { border: 5

使用float浮动之后,父元素“塌陷”的解决办法

常常在并排div的时候使用到float属性,但是使用之后会发现他们的父元素会没有高度,之后的元素会"挤上来",造成"塌陷". 比如,我们想要的如下效果: 代码如下: <!DOCTYPE html> <html>     <head lang="en">         <meta charset="UTF-8">         <title></title&g

子元素float后,防止父元素塌陷的方法

A在浮动元素后加个div设置clear: both; height:0,overflow:hidden B使用clearfix;用于父元素上 1 .clearfix:after { 2 content: " "; 3 display: block; 4 clear: both; 5 height: 0; 6 } 7 .clearfix { 8 zoom: 1; 9 } 优化后的: 1 .clearfix { 2 zoom: 1; 3 display: table; 4 width: 1

CSS父元素高度随子元素高度变化而变化

<html> <body> <head> <style> #menu{width:1000px;overfloat:hidden;} /* width:1000px;overfloat:hidden; 父元素高度随子元素变化而变化 */ #menu ul{list-style-type:none;} #menu ul li{float:left;margin-right:10px;} /* float:left; 浮动横布局,让父元素高度变0px */ &l

css父元素背景覆盖其子元素背景

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style> 7 8 .test1{ 9 width: 100px; 10 height: 100px; 11 border: 1px solid green; 12 background: green; 13 position: absol

css父元素和子元素之间margin-top的问题

问题:父元素的盒子包含一个子元素盒子,给子元素盒子一个垂直外边距margin-top,父元素的盒子也会受到子元素的margin-top值的影响. 原因:所有毗邻的两个或者多个元素的margin将会合并为一个margin共享之.毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容.padding或者border分隔.其中float和position(css2.1浮动元素和绝对定位元素不参与margin折叠) 解决方法: 1.修改父元素的高度,增加padding-top样式模拟(paddin

css父元素透明度(opacity)对子元素的影响

首先子元素会继承父元素的透明度: 设置父元素opacity:0.5,子元素不设置opacity,子元素会受到父元素opacity的影响,也会有0.5的透明度. 其次子元素的透明度是基于父元素的透明度计算的: 设置父元素opacity:0.5,即使设置子元素opacity:1,子元素的opacity:1也是在父元素的opacity:0.5的基础上设置的,因此子元素的opacity还是0.5. 解决办法: 利用CSS3属性rgba(即red+green+blue+alpha的颜色), 例如backg

css 父元素的宽度随子元素的宽度变化

当最外面的层想要设置一个 overflow: hidden,但子元素又想他们能滚动,像今日头条的滚动导航一样: html: <div id="wrapper"> <ul id="scroll"> <li>cell 1</li> <li>cell 2</li> <li>cell 3</li> <li>cell 4</li> <li>cel

父元素高度塌陷的解决办法

很多时候子元素浮动的,会造成父元素塌陷 解决方法 1.添加一个空元素,并设置成清除浮动,即: <div style="clear:both;"></div> 优点:通俗易懂,易于掌握 缺点:添加了无意义标签,不易于后期维护,违背了结构和表现的标准 2.给父元素添加 overflow:auto; 3.给父元素也浮动 缺点:影响整体页面布局,若父元素也有父元素呢? 4.使用after伪元素 给父元素添加一个类,即看不见的清除浮动的元素 .clearfix:after

【css基础】div父元素根据子元素高度自适应高度

两种情况(无特殊说明子元素都是指代父元素的第一级子元素) 第一种:若子元素没有带有float元素的元素,对于高度是自适应的没有问题. 第二种:若子元素全是带有float属性的元素,这时候我们会发现父元素塌陷,高度为0,因为float浮动元素脱离了正常的文档流,父元素相当于没有了这两个儿子! 解决这个问题的根源就是清除浮动: 1 , 给父节点增加样式overflow:hidden或者overflow:auto 2 , 在子元素中的最后一个添加一个兄弟节点,当然该节点应该是一个空节点.你可以用div