Day03-网页布局实战-浮动

119 阅读2分钟

网页布局实战

文档流

想要让元素再水平方向排列,我们需要设置布局模块浮动。

浮动是元素排列的一种方案。他有很多特点。跟普通布局不一样

标准文档流

目前学习标签分为两类:

  1. 块标签:布局,独占一行
  2. 行标签:填充内容

排列元素的时候,默认的排列规则就是按照块独占一行,行标签共享一行空间

称为标准文档流

多个块元素想要再一行显示的时候,无法实现

脱离文档流

不按照标签文档流的规范来进行页面元素排列,按照新的规则来排列

一般针对局部空间。

浮动布局是你们以后开发用的非常多的一种布局方式

特点:

  1. 只要给元素设置浮动,当前这个元素脱离文档流。(排列规则不再受标准文档流约束。原来空间不在)
  2. 浮动的元素前面有标准文档流规则,不影响前面元素,影响后面的元素
  3. 所有浮动的元素,按照给定的方向一个接着一个排列。
  4. 浮动是可以设置方向,left、right。按照顺序移动元素。先浮动先填放位置
  5. 浮动的元素在一行显示不下的情况,自动换上显示(默认按照指定顺序排列)

案例一

image-20221126203951384

浮动属性

float:left; 左浮动
float: right; 右浮动

​ 作用是把多个盒子排版到同一排 ​ 只有需要把当前的盒子和其它盒子放到同一排时,才需要给当前盒子加float浮动

浮动布局遇到的问题

​ 给盒子加float属性后,会让当前盒子漂浮起来,当前盒子就脱离正常的文档流,可能会造成父容器高度塌陷

清除浮动的方案

作用是清除浮动对父元素的影响,让当前的盒子不会挤到上面

  1. 给这个大盒子一个固定高度就可以清除浮动造成的影响

  2. 在浮动盒子的末尾,再加一个空div, 用于清除当前盒子浮动的影响。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .big { border: 3px solid purple; }
            .s1 { width: 200px; height: 400px; 
                background: #087; float: left;}
            .s2 { width: 200px; height: 200px;
                 background: #f90; float: left}
        </style>
    </head>
    <body>
        <div class="big">
            <div class="s1"></div>
            <div class="s2"></div>
            <!-- 在大盒子子级的末尾加一个专用的div -->
            <div style="clear: both;"></div>
        </div>
        123123123
    </body>
    </html>
    
  3. 可以在大盒子上加一个伪元素::after,用这个伪元素去完成 清除浮动,::after 可以在一个标签的末尾再创造一个假元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 浮动解决方案3 -->
    <style>
        .header{
            width: 100%;
            /* BFC盒子:封闭盒子,盒子内部所有操作都不影响外部盒子 */
            /* overflow: hidden; */
            border: 1px solid green;
        }
        .header .left{
            width: 200px;
            height: 80px;
            background-color: pink;
            float: left;
        }
        .header .right{
            width: 300px;
            height: 100px;
            background-color: tomato;
            float: right;
        }
        .content{
            width: 100%;
            height: 400px;
            background-color: orange;
        }
        /* .header .box{
            清除浮动带来的元素影响
            clear: both;
        } */
        
        /* 只要发现盒子内部要浮动,父盒子增加一个class =“clearfix” 默认在父盒子最尾部添加div  */
        .clearfix::after{
            content:"";
            display: block;
            clear: both;
        }
    </style>
</head>
<body>
    <div class="header clearfix">
        <div class="left"></div>
        <div class="right"></div>
        <!-- 清除浮动对元素的影响 -->
        <!-- <div class="box"></div> -->
    </div>
    <div class="content"></div>
</body>
</html>

案例二

image-20221108161009302

贯穿案例

蜗牛家居首页布局

image-20221126204354836