flex布局讲解

112 阅读1分钟

给弹性容器(父盒子)添加

当我们需要使用flex布局时候,我们可以给需设置flex的盒子(弹性盒子)它的父盒子(弹性容器)添加disply:flex;

<!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>
       .box {
        width: 600px;
        height: 400px;
        background-color: pink;
       }
       .box div {
        width: 100px;
        height: 100px;
        background-color: red;
       }
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
    </div>
</body>
</html>

这是我们使用flex布局前的效果

1.png 如果我们想要,box盒子里的子盒子水平垂直居中,我们可以给.box父盒子设置flex.

        display: flex;
        justify-content: center;
        align-items: center;

2.png 仅仅3行代码,我们就可以实现子盒子的水平和垂直居中效果.如果是普通的方式来实现这个效果,往往是比较复杂的.我们需要使用position和transform: translate();才可以实现.(父盒子一定要有高度和宽度,否则设置样式不会生效)

为什么我称flex布局为弹性布局呢?

因为设置flex布局后.盒子会在一行显示,且不会主动换行.如果子盒子没有设置高度,那么子盒子的高会弹性到铺满父盒子.顾名思义弹性盒子.而这种布局就称为弹性布局.但是我们可以通过flex-wrap: wrap;来强制弹性盒子换行.并且我们可以通过align-content: ;来设置多行盒子的侧轴对齐样式.用法与align-items相似.

接下来是flex布局相关的一些属性和属性值.

3.png

4.png

圣杯布局

左右固定,中间自适应

<!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>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        .box {
            display: flex;
            width: 100%;
            height: 50px;
            background-color: pink;
        }
        .left,
        .right {
            width: 50px;
            background-color: red;
        }
        .center {
            flex: 1;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="left"></div>
        <div class="center"></div>
        <div class="right"></div>
    </div>
</body>
</html>

6.png

这是比较常见的移动端布局