美文网首页让前端飞网页前端后台技巧(CSS+HTML)
web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素

web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素

作者: 大前端世界 | 来源:发表于2019-12-01 16:08 被阅读0次

元素浮动定义

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。

注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。


why 子元素浮动 会导致父元素 高度塌陷?

这是因为内部的元素设置float:left || right后,就丢失了clear:both和display:block(持怀疑态度)的样式,所以外部的父容器不会被撑开。


举个🌰:

子元素未设置浮动,父元素自动被撑开

    <body>
        <div class="father">
            <div class="son"></div>
        </div>
    </body>
<style>
    .father {
        width: 400px;
        border: 1px solid blue;
    }
    .son {
        width: 200px;
        height: 200px;
        border: 1px solid red;
        background-color: yellow;
    }
</style>   
web前端开发学习Q-q-u-n: 731771211,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频,PDF)

子元素设置浮动,父元素高度塌陷

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
<style>
    .father {
        width: 400px;
        border: 1px solid blue;
    }
    .son {
        width: 200px;
        height: 200px;
        border: 1px solid red;
        background-color: yellow;
        float: left;
    }
</style>


闭合浮动的常见解决方案

最终,我们要的效果是要跟没设置浮动之前的效果一样,让父元素高度自适应:

  • 在浮动元素之后添加清除浮动的子元素:

<div class="father">
    <div class="son"></div>
    <div class="clearFloat"></div>
</div>
<style>
.father {
    width: 400px;
    border: 1px solid blue;
}
.son {
    width: 200px;
    height: 200px;
    border: 1px solid red;
    background-color: yellow;
    float: left;
}
.clearFloat {
    width: 100%;
    height: 0;
    clear: both;
}
</style>
web前端开发学习Q-q-u-n: 731771211,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频,PDF)

父元素设置 overflow: hidden

<div class="father">
    <div class="son"></div>
</div>
<style>
.father {
    width: 400px;
    border: 1px solid blue;
    overflow: hidden;
}
.son {
    width: 200px;
    height: 200px;
    border: 1px solid red;
    background-color: yellow;
    float: left;
}
</style>

是不是很神奇!因为子元素的浮动,会导致父元素误认为content高度为0(即蓝色边框为一条线),所以父元素设成overflow:hidden溢出隐藏的话,直觉上应该子元素由于溢出导致不显示才对。但真实效果是:父元素设成overflow:hidden溢出隐藏后,父元素高度居然自适应了!这是怎么回事呢?是因为 BFC(Block Formatting Context),感兴趣的童鞋,点击链接了解一下哈...

用 :after 伪元素,思路是用:after元素在div后面插入一个隐藏文本”.”,隐藏文本用clear来实现闭合浮动

.father:after {
    clear: both;
    content: ".";   //任意文本如“dfgdfg”
    display: block;
    height: 0;      //高度为0且hidden让该文本彻底隐藏
    visibility: hidden;
}

相关文章

  • web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素

    元素浮动定义 float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CS...

  • 清除浮动

    浮动元素脱离文档流,所以不占位置,当父元素没有设置高度时,不能撑开,导致父元素的高度塌陷,所以需要清除浮动。 方法...

  • 浮动、定位

    浮动 浮动的特点 浮动会使元素脱离文档流 任何元素设置浮动 都会变为块状元素 浮动的元素会对兄弟元素和父元素产生直...

  • css基础知识3

    1. 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 文档流:在html中文档流即为元...

  • clearfix——最佳清除浮动

    完整文章地址浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素!!!浮动会导致父元素高度坍塌:...

  • 浮动-定位

    浮动的特点 浮动会使元素脱离文档流 任何元素设置浮动 都会变为块状元素 浮动的元素会对兄弟元素和父元素产生直接影响...

  • web前端入门到实战:CSS清除浮动的方法,通过项目解析总结

    网页布局中经常会用到float浮动,但是浮动的块级元素脱离了标准文档流,使得浮动元素的父元素没有高度,导致父级元素...

  • 浮动导致的父容器高度塌陷

    浮动导致的父容器高度塌陷是指由于浮动元素脱离文档流,页面渲染时无法计算上浮动元素的高度,导致父元素的高度没有被撑开...

  • 常见的清除浮动方法

    当元素设置float浮动后,该元素就会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素,浮动元素会造成...

  • 记12月9日作业

    浮动元素有什么特征? 浮动元素 浮动元素脱离正常的文档流; 设置浮动元素之后,不浮动的元素则不会感知到浮动元素的存...

网友评论

    本文标题:web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素

    本文链接:https://www.haomeiwen.com/subject/hqwmwctx.html