css浮动(float)

浮动(Float) 在CSS中是一个重要的布局技术,它允许元素向左或向右移动,其周围的元素会重新排列。当一个元素被设置为浮动时,它会脱离正常的文档流,这意味着它不再占据原本在文档流中的空间,而会尽可能地向左或向右移动,直到遇到父级元素的边界或其他浮动元素。

用途: 文本环绕图片,控制元素的对齐,创造多列布局
举例:文本环绕图片

<div class="a">
    <div class="b">float</div>
         这是一段文字描述This is a text description这是一段文字描述
</div> -->
<style>
    .a{
        width: 200px;
        height: 130px;
            border: 1px solid orange; 
    }
    .b{
        width: 80px;
        height: 70px;
        background-color: red;
        border: 10px solid yellow;
        float: left;
    }
</style>

未设置浮动时:

如图所示:
在这里插入图片描述

设置浮动后:

如图所示:
在这里插入图片描述

带来的问题

<div class="container">
    <div class="float-item">浮动元素</div>
    <div class="float-item">浮动元素</div>
    <!--<div style="clear:both;">额外标签法</div>--!>
    <div class="non-float-item">非浮动元素</div>
</div>
<style>
        .container {
            width: 200px;
            border: 1px solid orange;
            /* display:flow-root   */
            /* overflow: hidden; */
        }
        /* 添加伪元素清除浮动 */
        /* .container::after {
                content: "";
                display: table;
                clear: both;
            } */
        .float-item {
            float: left;
            width: 80px;
            height: 70px;
            background-color: red;
            border: 10px solid yellow;
        }
        .non-float-item {
            width: 80px;
            height: 70px;
            background-color: blue;
        }
</style>

问题1: 相邻元素重叠:因为它们不再占据文档流中的空间,所以相邻的非浮动元素会与之重叠
如图所示:
在这里插入图片描述

问题2: 父级元素高度塌陷(内部高度为0)
如图所示:
在这里插入图片描述
正常不设置浮动的样子:
在这里插入图片描述

解决方案:

1.使用空标签清除浮动: 在浮动元素后添加一个空标签(如“<div style="clear:both;"></div>”),并设置clear:both;clear CSS 属性指定一个元素是否必须移动 (清除浮动后) 到在它之前的浮动元素下面(相应值有:none,left,right,both)。clear 属性适用于浮动和非浮动元素。
优点: 简单易懂,书写方便,不会破坏文档结构。
缺点:

  • 需要添加额外的HTML元素,增加了DOM的复杂性。
  • 需要在每个需要清除浮动的元素后面都添加这个额外的元素,增加了维护成本

2.使用伪元素清除浮动: 使用:after伪元素在浮动元素的父元素后添加一个内容为空、clear:both;的元素
优点: 不需要增加额外的DOM元素,减少了页面的复杂性。
缺点: 对于一些老旧的浏览器,可能需要额外的CSS hack来兼容

3. 父级触发BFC: 可以通过触发BFC的方式,实现清楚浮动效果。(使用overflow:hidden时,浏览器会自动检查浮动区域的高度)
优点: BFC能够解决除清除浮动外很多布局问题
缺点: 不适合所有场景,需要根据具体情况来判断是否使用BFC
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值