Blogger Information
Blog 8
fans 1
comment 0
visits 10184
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
flex容器中的主轴方向与项目换行缩写、主轴,交叉轴和多行容器交叉轴项目对齐以及以及flex属性的缩写和案例
雷斯提亚
Original
2559 people have browsed it

flex

1. flex容器与项目

1.1.  display属性(共2种)

序号属性值描述备注
1flex;创建 flex 块级容器内部子元素自动成为 flex 项目
2inline-flex;创建 flex 行内容器内部子元素自动成为 flex 项目

1.2.  flex 容器与项目特征

序号容器/项目默认行为
1容器主轴水平方向
2项目排列沿主轴起始线排列(当前起始线居左)
3项目类型自动转换”行内块级”元素,不管之前是什么类型
4容器主轴空间不足时项目自动收缩尺寸以适应空间变化,不会换行显示
5容器主轴存在未分配空间时项目保持自身大小不会放大并充满空间
例:
<head>    <style>        .dome{            width: 300px;            height: 200px;            display: flex;        }    </style></head><body>    <div class="dome">        <div class="item">1</div>        <div class="item">2</div>        <div class="item">3</div>    </div></body>

2. flex 容器主轴方向:

flex-direction属性:

序号属性值描述
1row默认值主轴水平: 起始线居中,项目从左到右显示
2row-reverse主轴水平:起始线居右, 项目从右向左显示
3column主轴垂直: 起始线居上,项目从上向下显示
4column-reverse主轴垂直: 起始线居下,项目从下向上显示
例:
    <style>        .dome{            width: 300px;            height: 200px;            display: flex;            flex-direction: row-reverse;        }        .item {        width: 100px;        height: 50px;        background-color:red;        font-size: 3rem;      }    </style>

    <style>        .dome{            width: 300px;            height: 200px;            display: flex;            flex-direction: column-reverse;        }        .item {        width: 100px;        height: 50px;        background-color:red;        font-size: 3rem;      }    </style>

3. flex 容器主轴项目换行

3.1 flex-warp属性:

序号属性值描述
1nowrap默认值项目不换行: 单行容器
2wrap项目换行: 多行容器,第一行在上方
3wrap-reverse项目换行: 多行容器,第一行在下方
例:
  • 项目不换行:


    1.  <style>

    2.      .dome{

    3.          width: 300px;

    4.          height: 200px;

    5.          display: flex;

    6.          flex-wrap: nowrap;

    7.      }

    8.      .item {

    9.      width: 150px;

    10.      height: 50px;

    11.      background-color:red;

    12.      font-size: 3rem;

    13.    }

    14.  </style>

  • 项目换行(上)


    1.  <style>

    2.      .dome{

    3.          width: 300px;

    4.          height: 200px;

    5.          display: flex;

    6.          flex-wrap: wrap;

    7.      }

    8.      .item {

    9.      width: 150px;

    10.      height: 50px;

    11.      background-color:red;

    12.      font-size: 3rem;

    13.    }

    14.  </style>

  • 项目换行(下)


    1.  <style>

    2.      .dome{

    3.          width: 300px;

    4.          height: 200px;

    5.          display: flex;

    6.          flex-wrap: wrap-reverse;

    7.      }

    8.      .item {

    9.      width: 150px;

    10.      height: 50px;

    11.      background-color:red;

    12.      font-size: 3rem;

    13.    }

    14.  </style>

3.2 简写:

  • (1)flex-flow是属性flex-directionflex-wrap的简写

  • (2)语法:flex-flow: flex-direction flex-warp

  • (3)row nowarp为默认值

例:
    <style>        .dome{            width: 300px;            height: 200px;            display: flex;            flex-flow: row-reverse wrap;        }        .item {        width: 150px;        height: 50px;        background-color:red;        font-size: 3rem;      }    </style>

4. flex 容器主轴与项目对齐

justify-content属性

序号属性值描述
1flex-start默认所有项目与主轴起始线对齐
2flex-end所有项目与主轴终止线对齐
3center所有项目与主轴中间线对齐: 居中对齐
4space-between两端对齐: 剩余空间在头尾项目之外的项目间平均分配
5space-around分散对齐: 剩余空间在每个项目二侧平均分配
6space-evenly平均对齐: 剩余空间在每个项目之间平均分配
注:当容器中主轴方向上存在剩余空间时, 该属性才有意义
例:
  • 终止线对齐:


    1.  <style>

    2.      .dome{

    3.          width: 400px;

    4.          height: 200px;

    5.          display: flex;

    6.          justify-content: flex-end;

    7.      }

    8.      .item {

    9.      width: 100px;

    10.      height: 50px;

    11.      background-color:red;

    12.      font-size: 3rem;

    13.    }

    14. </style>

  • 居中对齐:


    1.   .dome{

    2.          width: 400px;

    3.          height: 200px;

    4.          display: flex;

    5.          justify-content: center;

    6.      }

  • 两端对齐:


    1. .dome{

    2.          width: 400px;

    3.          height: 200px;

    4.          display: flex;

    5.          justify-content: space-between;

    6.      }

  • 分散对齐:


    1.    .dome{

    2.          width: 400px;

    3.          height: 200px;

    4.          display: flex;

    5.          justify-content: space-around;

    6.      }

  • 平均对齐:


    1.  .dome{

    2.          width: 400px;

    3.          height: 200px;

    4.          display: flex;

    5.          justify-content: space-evenly;

    6.      }

5. flex容器交叉轴项目对齐

align-items属性:

序号属性值描述
1flex-start默认与交叉轴起始线对齐
2flex-end与交叉轴终止线对齐
3center与交叉轴中间线对齐: 居中对齐
例:
     .dome{            width: 400px;            height: 200px;            display: flex;            align-items: flex-end;        }

  • 居中对齐:


    1.   .dome{

    2.          width: 400px;

    3.          height: 200px;

    4.          display: flex;

    5.          align-items: center;

    6.      }

6. flex 多行容器交叉轴项目对齐

6.1. align-content属性:

序号属性值描述
1stretch默认项目拉伸占据整个交叉轴
1flex-start所有项目与交叉轴起始线(顶部)对齐
2flex-end所有项目与交叉轴终止线对齐
3center所有项目与交叉轴中间线对齐: 居中对齐
4space-between两端对齐: 剩余空间在头尾项目之外的项目间平均分配
5space-around分散对齐: 剩余空间在每个项目二侧平均分配
6space-evenly平均对齐: 剩余空间在每个项目之间平均分配
注:
  • (1)该属性仅适用于多行容器

  • (2)多行容器中, 交叉轴会有多个项目, 剩余空间在项目之间分配才有意义

例:
    <style>        .dome{            width: 200px;            height: 200px;            display: flex;            flex-wrap: wrap;            align-content: flex-end;        }

    .dome{            width: 200px;            height: 200px;            display: flex;            flex-wrap: wrap;            align-content: space-around;        }

6.2. align-self属性:

序号属性值描述
1auto默认值继承 align-items 属性值
2flex-start与交叉轴起始线对齐
3flex-end与交叉轴终止线对齐
4center与交叉轴中间线对齐: 居中对齐
5stretch在交叉轴方向上拉伸
6baseline与基线对齐(与内容相关用得极少)
注:
  • 该属性可覆盖容器的align-items, 用以自定义某个项目的对齐方式

      .item:first-of-type{          height: initial;          align-self: stretch;      }      .item:nth-of-type(2){          align-self: flex-end;      }      .item:last-of-type{          align-self: center;      }

7. 项目放大因子

flex-grow属性:

  • (1)在容器主轴上存在剩余空间时, flex-grow才有意义

  • (2)该属性的值,称为放大因子

序号属性值描述
10默认值不放大,保持初始值
2initial设置默认值,与0等效
3n放大因子: 正数
例:
   <style>        .dome{            width: 300px;            height: 200px;            display: flex;            /* flex-wrap: wrap; */        }        .item {        width: 50px;        height: 50px;        background-color:red;        font-size: 3rem;      }      .item:first-of-type{          flex-grow: 1;      }      .item:nth-of-type(2){       background-color: lawngreen;       flex-grow: 2;      }      .item:last-of-type{        background-color: lightseagreen;        flex-grow: 3;      }    </style>

计算公式:
  • 300-(50)*3=150

  • 150/(1+2+3)=25

  • 则:第一个元素为:50=25=75px

  • 第二个元素为:50+25*2=100px

  • 第三个元素为:50+25*3=125px

8. flex 项目收缩因子

flex-shrink属性

序号属性值描述
11默认值允许项目收缩
2initial设置初始默认值,与 1 等效
30禁止收缩,保持原始尺寸
4n收缩因子: 正数
注:
  • 当容器主轴 “空间不足” 且 “禁止换行” 时, flex-shrink才有意义

例:
    <style>        .dome{            width: 300px;            height: 200px;            display: flex;            flex-flow: row nowrap;        }        .item {        width: 150px;        height: 50px;        background-color:red;        font-size: 3rem;      }      .item:first-of-type{          flex-shrink: 1;      }      .item:nth-of-type(2){        background-color: lawngreen;        flex-shrink: 2;      }      .item:last-of-type{        background-color: lightseagreen;        flex-shrink: 3;      }    </style>

计算公式:
  • 三个元素共:150*3=450px

  • 算出应该收缩的大小:450-300=150px

  • 算出每一个收缩倍数所要收缩的大小:150/(1+2+3)=25px

  • 则:第一个元素的宽度应该是:150-25*1=125px

  • 第二个元素的宽度应该是:150-25*2=100px

  • 第三个元素的宽度应该是:150-25*3=75px

9. flex 项目计算尺寸

flex-basis属性

序号属性值描述
1auto默认值: 项目原来的大小
2px像素
3%百分比
注:
  • (1)在分配多余空间之前,项目占据的主轴空间

  • (2)浏览器根据这个属性,计算主轴是否有多余空间

  • (3)该属性会覆盖项目原始大小(width/height)

  • (4)该属性会被项目的min-width/min-height值覆盖

  • 即:优先级: 项目大小 < flex-basis < min-width/max-height

例:
    <style>        .dome{            width: 300px;            height: 200px;            display: flex;            flex-flow: row nowrap;        }        .item {        width: 50px;        height: 50px;        background-color:red;        font-size: 3rem;      }      .item:first-of-type{          flex-basis: 100px;      }      .item:nth-of-type(2){        background-color: lawngreen;        flex-basis: 30%;      }      .item:last-of-type{        background-color: lightseagreen;      }    </style>

10. flex 项目缩放的简写

  • 语法:flex: flex-grow flex-shrink flex-basis

三值语法:

序号属性值描述
1第一个值: 整数 (0/1)flex-grow
2第二个值: 整数(0/1)flex-shrink
3第三个值: 有效宽度flex-basis

双值语法:

序号属性值描述
1第一个值: 整数flex-grow
3第二个值: 有效宽度flex-basis

单值语法:

序号属性值描述
1整数flex-grow
2有效宽度flex-basis
3关键字initial / auto / none
序号案例描述
1flex: 1flex: 1 1 auto
2flex: 180pxflex: 1 1 180px
3initialflex: 0 1 auto
4autoflex: 1 1 auto
5noneflex: 0 0 auto
例:

三值语法:

      .item:first-of-type{      flex: 0 1 100px      }

二值语法:

      .item:first-of-type{      flex: 0 150px      }

总结:

  • (1)display:flex创建flex 块级容器而display:inline-flex创建flex 行内容器

  • (2)flex-flow是属性flex-directionflex-wrap的简写。语法为: flex-flow: flex-direction flex-wrap

  • (3)justify-content属性仅当容器中主轴方向上存在剩余空间时, 该属性才有意义

  • (4)align-items属性仅适用于单行容器,且当容器中交叉轴方向上存在剩余空间时, 该属性才有意义

  • (5)align-content属性仅适用于多行容器,且剩余空间在项目之间分配才有意义

  • (6)align-self属性可以覆盖容器的align-items,用于自定义某个元素的对齐方式

  • (7)flex属性可以对扩大,收缩和项目计算尺寸进行简化。语法为:flex: flex-grow flex-shrink flex-basis

  • (8)当flex属性只有两个属性值时,语法为:flex: flex-grow flex-basis

  • (9)当flex属性只有一个属性值时,若是0/1,则为flex-grow;若为有效宽度是,则为flex-basis

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:非常棒, 作业要求全部都有, 很认真, 也一定能学会
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments