【前端-CSS】关于浮动、高度塌陷、BFC

关于浮动的一些特点

  • 浮动元素会完全脱离文档流,不再占用文档流的位置
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关于浮动</title>

    <style>
        .boxOne{
            width: 300px;
            height: 200px;
            background-color: lightcoral;
            border: 10px rgb(207, 120, 128) inset;
            float: left;
        }

        .boxTwo{
            width: 400px;
            height: 300px;
            background-color: lightpink;
            border: 10px pink inset;
        }
    </style>
</head>
<body>
    <div class="boxOne"></div>
    <div class="boxTwo"></div>
</body>
</html>

在这里插入图片描述

  • 浮动元素不会超过它上边的兄弟元素,垂直方向上,最多与前面的浮动元素同等高度

代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关于浮动</title>

    <style>
        .boxOne{
            width: 300px;
            height: 200px;
            background-color: lightcoral;
            border: 10px rgb(207, 120, 128) inset;
            float: left;
        }

        .boxTwo{
            width: 300px;
            height: 200px;
            background-color: lightpink;
            border: 10px pink inset;
            float: left;
        }

        .boxThree{
            width: 200px;
            height: 200px;
            background-color: cornflowerblue;
            border: 10px inset lightskyblue;
            float: right;
        }
    </style>
</head>
<body>
    <div class="boxOne"></div>
    <div class="boxTwo"></div>
    <div class="boxThree"></div>
</body>
</html>

效果图
在这里插入图片描述

  • 浮动元素不会盖住文字,文字会自动环绕在浮动元素周围。
  • 元素设置浮动之后,脱离文档流后,有些特点随之改变
    (1)块元素:不再独占一行,默认情况下,高度宽度会被内容撑开;
    (2)行内元素:脱离文档流后 ,特点与块元素一样;
    (3)即,元素脱离文档流后不再区分块元素和行内元素。

高度塌陷问题

  • 浮动布局中,父元素的高度默认是被子元素内容撑开的,当子元素设置浮动之后会脱离文档流,也就无法撑起父元素的高度,导致父元素高度丢失
  • 父元素高度丢失之后,其下方的元素会自动上移,导致页面布局混乱
  • 高度塌陷现象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关于高度塌陷</title>
    <link rel="stylesheet" href="../css/reset.css">
    <style>
        .outer{
            border: 10px inset paleturquoise;
        }
        .inner{
            width: 100px;
            height: 100px;
            background-color: powderblue;
            float: left;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner"></div>
    </div>
</body>
</html>
 

在这里插入图片描述

使用after伪类解决高度塌陷问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>解决高度塌陷</title>
     <style>
        .outer{
            border: 10px inset paleturquoise;
        }
        .inner{
            width: 100px;
            height: 100px;
            background-color: powderblue;
            float: left;
        }

         .outer::after{
             display: block;
            content: "";
            clear: both;
         }
     </style>
</head>
<body>
    <div class="outer">
        <div class="inner"></div>
      
    </div>
    
</body>
</html>

在这里插入图片描述

BFC(block formatting context)块级格式化环境

  • BFC(block formatting context)块级格式化环境:是CSS中一个隐含属性。当一个元素开启BFC之后,会变成一个独立的布局区域
  • 如何开启BFC:
    (1)设置元素的浮动(不推荐,副作用较大)
    该情况下,该元素脱离文档流,宽度丢失
    在上例高度塌陷的基础上,修改outer的样式
	  .outer{
            margin: 30px;
            border: 10px inset paleturquoise;
           float: left;  /* 开启BFC */
        }

在这里插入图片描述
(2)将元素设置为行内块元素(不推荐)

 .outer{
            margin: 30px;
            border: 10px inset paleturquoise;
            display: inline-block;
        }

在这里插入图片描述(3)将元素的overflow设置为一个非visible值(经常使用hidden、auto也可以)

 .outer{
            margin: 30px;
            border: 10px inset paleturquoise;
            overflow: auto;
        }

在这里插入图片描述

  • 开启BFC之后的元素特点
    (1)开启BFC的元素不会被浮动元素覆盖
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BFC</title>
    <style>
        .outer{
            width: 200px;
            height: 200px;
            background-color: powderblue;
            float: left;
        }

        .new{
            width: 200px;
            height: 200px;
            background-color: skyblue;
            overflow: hidden;  /*开启BFC*/
    }
    </style>
</head>
<body>
    <div class="outer"> </div>
    <div class="new"></div> 
</body>
</html>

未开启BFC:
在这里插入图片描述 开启BFC后:
在这里插入图片描述
(2)开启BFC的元素与其父元素的外边距不会重叠

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BFC</title>
    <style>
        .outer{
            width: 200px;
            height: 200px;
            background-color: powderblue;
            overflow: hidden;/*开启BFC*/
        }

        .inner{
            width: 100px;
            height: 100px;
            background-color: lightskyblue;
            margin-top: 50px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner"></div>
    </div>
</body>
</html>

未开启BFC:
在这里插入图片描述
开启BFC后:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值