设置BFC后子盒子还是超出父盒子了

设置BFC后子盒子还是超出父盒子了

# 具体遇到的问题
box1设置为左浮动,就已经是一个BFC了,那么为什么里面的子盒子还超出BFC呢
# 报错信息的截图
http://img1.sycdn.imooc.com//climg/5fb6054209ae8e2f04270316.jpg

​# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>BFC规范</title>

    <style>

        .box1{

            width300px;

            height:200px;

            background-colorred;

            floatleft;

        }


        .c1{

            width:200px;

            height:300px;

            background-colororange;

        }

    </style>

</head>

<body>

    <div class="box1">

        <div class="c1"></div>

    </div>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,本代码并没有形成BFC,参考如下(可以复习一下课程,结合课程理解):

1. 在父元素没有高度的前提下,子元素设置浮动会脱离文档流,所以就没有办法撑开父元素高度。

http://img1.sycdn.imooc.com//climg/5fb60cd709c5553504890526.jpg

父元素高度为0,如下:

http://img1.sycdn.imooc.com//climg/5fb60d170997150202980320.jpg

此时就可以给父元素设置浮动,形成BFC,父元素高度就撑开了。

http://img1.sycdn.imooc.com//climg/5fb60d320990466503940229.jpg

http://img1.sycdn.imooc.com//climg/5fb60d2b095fabef04610461.jpg

所以如上情况,形成BFC的前提是父元素不设置高度,且子元素要设置浮动。不然设置BFC没有意义,子元素高度大于父元素高度肯定会溢出的。

2.如果父元素设置高度小于子元素高度, 即使使用overflow: hidden超出隐藏也是不对的。

http://img1.sycdn.imooc.com//climg/5fb60dfd0926d8e604160527.jpg

如下图,子元素虽然不会溢出了,但是超出的部分被隐藏了,这样子元素显示不全:

http://img1.sycdn.imooc.com//climg/5fb60e470949911109140418.jpg

所以父元素是不需要设置高度的,如下:

http://img1.sycdn.imooc.com//climg/5fb60e8009e4352913760785.jpg

祝学习愉快~


  • 慕码人4339946 提问者 #1
    意思就是使用浮动,voerflow:hidden 形成BFC的前提是不设置其高度吗
    2020-11-19 14:29:31
好帮手慕夭夭 2020-11-19 15:02:59

同学你好,没错,理解的正确。祝学习愉快~

情分的小前端 2020-11-19 14:12:01

给.c1加个那个什么overflow:hidden试试

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师