保姆级flex弹性布局教程

入门

  1. flex 是什么?
    . flex 是 Flexible Box 的缩写,就是弹性盒子布局的意思
  2. flex优点?
    .Flex布局非常灵活,可以在任何容器中使用。可以轻松扩展和修改。
    .Flex布局具有响应式设计,因此可以在不同的屏幕尺寸和设备上使用。
    .Flex布局非常简单易用,几乎没有学习曲线。
    .Flex布局支持动画效果,可以轻松实现各种动画效果。
    .Flex布局非常高效,可以快速实现复杂的布局和UI设计。
    主要就是根据下面两个轴来进行操作布局
    请添加图片描述

代码使用

justify-content - main轴-水平布局

正常我们写多个块元素时会造成自动换行
例如:
请添加图片描述

左对齐

当我们需要元素水平排列是只需在样式中添加 display: flex; 即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 600px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

右对齐

上面的是flex默认的左对齐,如果需要右对齐就需要再新增一个样式 justify-content: flex-end;
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 右对齐 */
            justify-content: flex-end;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

水平居中

水平居中只需将其更改为 justify-content: center;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平居中 */
            justify-content: center;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:请添加图片描述

两端对齐

两端对齐则需更改为 justify-content: space-between;
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 两端对齐 */
            justify-content: space-between;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

两端对齐中间距离为两倍

如果需要 两端对齐,中间的距离是两端和容器距离的2倍则需将其更改为 justify-content: space-around; 即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 两端对齐,中间的距离是两端和容器距离的2倍。 */
            justify-content: space-around;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

两端对齐距离相等

如果需要两端对齐,中间距和容器两端的距离相等则将其改为 justify-content: space-evenly;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 两端对齐,中间距和容器两端的距离相等。 */
            justify-content: space-evenly;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:请添加图片描述

align-items - cross轴-垂直布局

垂直居中

需要垂直方向居中则需要增加 align-items: center;
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 垂直居中 */
            align-items: center;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

底部对齐

需要cross轴底部对齐时需要更改 align-items: flex-end;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* cross轴底部对齐 */
            align-items: flex-end;
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:请添加图片描述

水平垂直居中

需要水平垂直居中时添加 justify-content: center; align-items: center;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            align-items: center;       /*  垂直居中 */
            
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

flex-direction - 项目方向

水平反序排列

水平方向反序排列只需增加 flex-direction: row-reverse;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            /* 水平方向,反序排列 */
            flex-direction: row-reverse;
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

垂直正序排列

垂直方向正序排列只需修改 flex-direction: column;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            /* 垂直方向,正序排列 */
            flex-direction: column;
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

垂直反序排列

垂直方向反序排列只需修改 flex-direction: column-reverse;即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            /* 垂直方向,反序排列 */
            flex-direction: column-reverse;
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div>第一个子元素</div>
        <div>第二个子元素</div>
        <div>第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

flex-wrap - 换行、换列

nowrap 默认值,不换行、换列。
当flex项目的总宽度超过容器的宽度,flex项目将按照原有比例强行等分,且不换行。
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            align-items: center;       /* 垂直居中 */
			/* 默认不换行 */
            flex-wrap: nowrap;
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div style="width: 500px;">第一个子元素</div>
        <div style="width: 500px;">第二个子元素</div>
        <div style="width: 600px;">第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

自动换行换列

换行、换列。当flex项目的总宽度超过容器的宽度,将自然换行、换列。且每一行(列)等分容器只需将其修改为 flex-wrap: wrap; 即可
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex弹性布局</title>
    <style>
         .box{
            width: 100%;
            height: 300px;
            border: 1px solid blue;
            /* flex默认水平布局 */
            display: flex;
            /* 水平、垂直居中对齐 */
            justify-content: center;   /*  水平居中 */
            align-items: center;       /* 垂直居中 */
            /* 自动换行 */
            flex-wrap: wrap;
        }
        .box>div{
            margin-top: 10px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        <div style="width: 500px;">第一个子元素</div>
        <div style="width: 500px;">第二个子元素</div>
        <div style="width: 600px;">第三个子元素</div>
    </div>
</body>
</html>

效果:
请添加图片描述

这就是简单的基础flex弹性布局啦!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值