一、CSS弹性布局[弹性盒子、弹性元素]

一、CSS弹性布局

1.弹性盒子

弹性盒子的属性全都是写在父元素上面

1.1基础

解释:在父元素上写上display:flex;或者display:inline-flex;子元素就会出现弹性效果,其中flex块元素,inline-flex是行内块元素

如:
A:未加入display:flex;
在这里插入图片描述
B:加入display:flex;
在这里插入图片描述

1.2设置分布主轴

解释:该属性为:flex-direction: row;//默认是该参数

  • flex-direction: row;//元素从右向左排列

    在这里插入图片描述

  • flex-direction: row-reserve;//元素从左向右排列

    在这里插入图片描述

  • flex-direction: column;//元素从上向下排列
    在这里插入图片描述

  • flex-direction: column-reverse;//元素从下向上排列

    在这里插入图片描述

1.3设置换行与否

解释:该属性为:flex-wrap: nowrap;//默认是该参数,注意不换行(nowrap),当父元素大小放不小子元素大小总和时,每个子元素就会等比例压缩,占满盒子

选项说明
nowrap元素不拆行或不拆列(默认值)
wrap容器元素在必要的时候拆行或拆列
wrap-reverse容器元素在必要的时候拆行或拆列(以相反的顺序)

1.4 flex-flow

解释:flex-flowflex-directionflex-wrap 的组合简写模式

代码:flex-flow: row nowrap;

1.5 主轴设置

解释:该属性为:justify-content:flex-start;//默认值,用于控制元素在主轴上的排列方式

选项说明
flex-start元素紧靠主轴起点(默认)
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始
space-between第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间
space-around每个元素两侧的间隔相等。所以,元素之间的间隔比元素与容器的边距的间隔大一倍
space-evenly元素间距离平均分配

1.6 交叉轴设置

1.6.1 设置单行元素

如果把该属性应用到多行元素效果会很差

解释:该属性为:align-items:stretch;//默认值,用于控制容器元素在交叉轴上的排列方式

选项说明
stretch元素被拉伸以适应容器(默认值)(体现该值效果时,不能设置高度)
center元素位于容器的中心
flex-start元素位于容器的交叉轴开头
flex-end元素位于容器的交叉轴结尾

演示:

  • stretch
    在这里插入图片描述
1.6.2 设置多行元素

该属性为:align-content:stretch;//默认值,用于控制容器元素在交叉轴上的排列方式,需要配合设置flex-wrap: wrap;//如果不换行体现不出来效果

选项说明
stretch将空间平均分配给元素(体现该值效果时,不能设置高度)
flex-start元素紧靠主轴起点
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始
space-between第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间
space-around每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
space-evenly元素间距离平均分配

2.弹性元素

应用于子元素,也就是父元素设置display:flex;,其子元素可以设置下面的弹性元素

1.不能使用 float 与 clear 规则
2.弹性元素均为块元素
3.绝对定位的弹性元素不参与弹性布局

2.1 单个元素主轴设置

解释:属性为align-self:stretch;,需要父元素里面的子元素都在一行即flex-wrap:nowrap;,这样就能使得子元素能够单独被设置

选项说明
stretch将空间平均分配给元素
flex-start元素紧靠主轴起点
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始

2.2 空间分配

解释:该属性为flex-grow:1;用于将弹性盒子的可用空间,分配给弹性元素。可以使用整数或小数声明。
注意其会把盒子剩余空间都占满。元素flex-wrap:nowrap;flex-wrap:wrap;都可以

<!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>
        .a{
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            height: 800px;
            width: 500px;
            align-content:center;
            background-color: red;
        }
        .a1{
            height: 100px;
            width: 50px;
            background: pink;
            flex-grow: 1;
        }
        .a2{
            height: 100px;
            width: 50px;
            background: blue;
            flex-grow: 2;
        }
        .a3{
            height: 100px;
            width: 50px;
            background: skyblue;
            flex-grow: 1;
        }
    </style>
</head>
<body>
    <div class="a">
        <div class="a1"></div>
        <div class="a2"></div>
        <div class="a3"></div>

    </div>
</body>
</html>

效果:

  • 设置flex-grow前:
    在这里插入图片描述

  • 设置flex-grow后(上面代码效果):
    在这里插入图片描述

2.3 空间压缩

解释:该属性为flex-shrink: 1;//默认为1在弹性盒子装不下元素时定义的缩小值,该属性使用于flex-wrap:nowrap;即不换行时,会自动压缩,每个元素默认都有flex-shrink:1;‘1’这个位置数越大压缩比列越大即元素越小,当flex-shrink:0; 元素不会进行任何压缩。

<!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>
        .a{
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            height: 800px;
            width: 100px;
            background-color: red;
        }
        .a1{
            height: 100px;
            width: 50px;
            background: pink;
            flex-shrink: 1;
        }
        .a2{
            height: 100px;
            width: 50px;
            background: blue;
            flex-shrink: 2;
        }
        .a3{
            height: 100px;
            width: 50px;
            background: skyblue;
            flex-shrink: 1;
        }

    </style>
</head>
<body>
    <div class="a">
        <div class="a1"></div>
        <div class="a2"></div>
        <div class="a3"></div>

    </div>
</body>
</html>

效果:

  • flex-shrink不为0时(上面代码效果)
    在这里插入图片描述

  • flex-shrink:0;

    在这里插入图片描述

2.4 显示优先级

解释:该属性是order:0;数值越靠前(也就是在弹性盒子主轴最前面),配合js效果很好

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值