内层元素设置浮动,外层元素不设置浮动和高度,内层元素不能撑开外层元素高度问题

<style>

.par {
    border: 5px solid #fcc;
    width: 300px;
    /*height:110px;  注意这里给外层元素设置相应高度,外层元素会包裹内层元素,并占用文档流*/
    /*float:left;   或者给外层元素设置浮动,外层元素也会包裹内层元素,但不会占用文档流空间*/
}

.child {
    border: 5px solid #f66;
    width:100px;
    height: 100px;
    float: left;
}
</style>
<body>
<div class="par">
    <div class="child"></div>
    <div class="child"></div>
</div>
</body>

---上边代码显示页面(内层元素不能撑开外部元素)

---上边给出了2种解决方案,第一种方案,外层元素设置高度,写死了,如果内部元素高度发生变化,外层层元素写死了,不太好。第二种解决方案,会脱离文档流也不太好。最好的解决方案(为外层元素加overflow属性):.par { overflow: hidden; }  //清除内部浮动,外层元素par在计算高度时,par内部的浮动元素child也会参与计算。

  

解释为什么:overflow:hidden撑起float的元素高度

BFC(块级排版上下文)的定义:

  BFC是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干

BFC的规则(只列出需要的):

  1. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
  2. 计算BFC的高度时,浮动元素也参与计算。

哪些元素会产生BFC(只列出需要的):

  1. overflow不为visible

参考:https://www.cnblogs.com/feichengwulai/articles/4687579.html
参考知乎:https://www.zhihu.com/question/30938856/answer/324582230

原文地址:https://www.cnblogs.com/stone5/p/8997468.html

时间: 2024-10-11 10:35:27

内层元素设置浮动,外层元素不设置浮动和高度,内层元素不能撑开外层元素高度问题的相关文章

给li设置float浮动属性之后,无法撑开外层ul的问题。

最近在项目中有好几次遇到这个问题,感觉是浮动引起的,虽然用<div style="clear:both"></div>解决了,但自己不是特别明白,又在网上查了相关内容,是因为给li设置了浮动之后它就脱离当前正常的文档流,所以没办法撑开外层ul的高度. 以下面代码为例,其实有好几种解决方法,我用的这种并不是最简单的. <!DOCTYPE html ><html ><head><meta charset="utf-

给li设置float浮动属性之后,无法撑开外层ul的问题。(原址:http://www.cnblogs.com/cielzhao/p/5781462.html)

最近在项目中有好几次遇到这个问题,感觉是浮动引起的,虽然用<div style="clear:both"></div>解决了,但自己不是特别明白,又在网上查了相关内容,是因为给li设置了浮动之后它就脱离当前正常的文档流,所以没办法撑开外层ul的高度. 以下面代码为例,其实有好几种解决方法,我用的这种并不是最简单的. <!DOCTYPE html ><html ><head><meta charset="utf-

子div用了float浮动之后,如何撑开父元素,让父元素div自动适应高度的问题

方法一: html: <div id="all1"> <div id="left1">1</div> <div id="left2">1</div> <div style=" clear:both; "></div> </div> css: #left1{ float:left;width:200px;} #left2{ float

关于浮动撑开父元素宽度的兼容性问题

标准参考: 根据 CSS2.1 规范中的描述,浮动元素将尽可能的向左或向右浮动,直到该元素的外边界碰到其包含块的边界或另一个浮动元素的外边界. 换句话说,当浮动元素的包含块能够在横向完全容纳该元素时,该元素不会再继续撑大其包含块. 问题描述: 在 IE6 IE7 IE8(Q) 中,一个右浮动元素将尽可能的向右布局,并撑大其所有宽度为 'auto' 的祖先级元素的宽度,直到遇到一个明确设定了宽度的祖先级元素为止. 注:这种现象仅在该元素有宽度为 shrink-to-fit 的的祖先级元素时才可以看

子元素浮动时无法撑开父元素,父元素高度为0的解决方法

当子元素浮动时无法撑开父元素,父元素高度为0.这时可以通过在浮动的子元素后清除浮动来使父元素获得正确的高度. <div> <div style="float:left;height:200px;">child</div> <div style="clear:both;"></div> </div>

[ jquery 效果 show([speed,[easing],[fn]]) hide([speed,[easing],[fn]]) ] 此方法用于显示隐藏的被选元素:show() 适用于通过 jQuery 方法和 CSS 中 display:none type=&#39;hidden&#39; 隐藏的元素(不适用于通过 visibility:hidden 隐藏的元素)

show()显示隐藏的被选元素:show() 适用于通过 jQuery 方法和 CSS 中 display:none type='hidden' 隐藏的元素(不适用于通过 visibility:hidden 隐藏的元素): hide() 方法隐藏被选元素: 参数 描述 speed 可选.规定显示效果的速度. 可能的值: 毫秒 "slow" "fast" easing 可选.规定在动画的不同点上元素的速度.默认值为 "swing". 可能的值: &

Ubuntu 桌面设置之网络环境的设置

Ubuntu 桌面设置之网络环境的设置 由于无线技术的扩展,很多情况下,并不依赖于有线环境的联通而能实现大家对网络的需求,比如在图书馆,在实验室,在飞机场,星巴克等等.尽管有很多时候,都可以使用系统的默认设置,但是,更多时候,需要自己手动设置,甚至需要修改一下配置文件. 在我们实验室的网络环境下,是4台无线路由进行无缝连接,其中一台路由转发信号,构建了3个子网.由于廉价路由的通性,获取不到IP,连接不上ROUNTER的情况时有发生,所以,有必要对客户端的电脑进行设置,在WIN下面,可以说是极为简

c编程:求出4&amp;#215;4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。

//求出4×4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和 #include <stdio.h> int main() { int sum=0; int max,min; int max1,max2;//记录最大值的坐标 int min1,min2;//记录最小值的坐标 int i,j; int a[4][4]; //为数组赋值 for(i=0;i<4;i++) { for(j=0;j<4;j++) { scanf("%d",&

(转)中国电信友华PT921、PT921G光猫设置路由,无线WIFI设置

中国电信友华PT921.PT921G光猫设置路由,无线WIFI设置. 第一步,用管理员帐号密码登陆,打开浏览器,输入http://192.168.1.1 登陆帐号:telecomadmin登陆密码:nE7jA%5m 第二步,点开网络-宽带设置,按下图设置好,保存即可 第三步,我们还需要设置WIFI,默认是开启的,但为了方便使用,我们需要修改一下连接名称和密码.如图: 原文地址: http://www.71712.cn/a_138.html