flex弹性布局知识点详解

01_1flex-direction

  • flex-direction用来控制子项整体布局方向,是从左往右还从右往左,是从上往下还是从下往上
取值含义
row默认值,显示为行。方向为当前文档水平流方向,默认情况下是从左往右在这里插入图片描述
row-reverse显示为行。但方向和row属性值方向相反在这里插入图片描述
column显示为列在这里插入图片描述
column-reverse显示为列。但方向和column属性值是反的在这里插入图片描述

01_2 flex布局特性

 当输入的内容宽度大于设定区域的宽度时,会自动平均分配,改变内容宽度大小;但是当内容过多超过可分配宽度,则内容会溢出

01_3 flex-wrap

  • flex-wrap用来控制子项整体单行显示还是换行显示
取值含义
nowrap默认值,表示单行显示,不换行 在这里插入图片描述
wrap宽度不足换行显示在这里插入图片描述
wrap-reverse宽度不足换行显示,但是是从下往上开始,也就是原本换行在下面的子项现在跑到上面在这里插入图片描述

01_4flex-flow

  • flex-flow属性是flex-direction和flex-wrap的缩写,表示flex布局的flow流动性。第一个值表示方向,第二个值表示换行,中间用空格隔开

01_5 justify-content

  • justify-content属性决定了主轴方向上子项的对齐和分布方式
取值含义
flex-start默认值,表现为起始位置对齐 在这里插入图片描述
flex-end表现为结束位置对齐在这里插入图片描述
center表现为居中对齐在这里插入图片描述
space-between表现为两端对齐,between是中间的意思,意思是多余的空白间距只在元素中间区域分配在这里插入图片描述
space-aroundaround是环绕的意思,意思是每个flex子项两侧都环绕互不相干扰的等宽的空白间距,最终视觉上边缘两侧的空白只有中间空白宽度一半在这里插入图片描述
space-evenlyevenly是匀称、平等的意思。也就是视觉上,每个flex子项两侧空白间距完全相等在这里插入图片描述

01_6align-items

  • align-items中的items指的就是flex子项们,因此align-items指的就是flex子项们相对于flex容器在侧轴方向上的对齐方式。
  • align-items是针对一行子项的对齐方式
  • 为了方便观察源代码添加了justify-content: space-evenly;
取值含义
stretch默认值,flex子项拉伸在这里插入图片描述
flex-start表现为容器顶部对齐在这里插入图片描述
flex-end表现为容器底部对齐在这里插入图片描述
center表现为垂直居中对齐在这里插入图片描述

01_7align-content

  • align-content可以看成和justify-content是相似且对立的属性,如果所有flex子项只有一行,则align-content属性是没有任何效果的。
  • align-content是多行子元素的对齐方式
取值含义
stretch默认值,每一行flex子元素都等比拉伸。例如:如果共两行flex子元素,则每一行拉伸高度是50%。
flex-start表现为起始位置对齐
flex-end表现为结束位置对齐
center表现为居中对齐
space-between表示为两端对齐
space-around每一行元素上下都享有独立不重叠的空白空间
space-evenly每一行元素都完全上下等分

01_8总结

  • 01_1–01_7是添加在父元素的css样式
  • 因为justify-contentalign-itemsflex-wrap是针对单行子项的对齐方式,所有折行时上下两行会出现空白间隔,结合align-content使用后可消除。
  • css
<style>
    #box{
        width: 300px;
        height: 300px;
        border: 1px black solid;
        margin: 20px auto;
        display: flex;
        justify-content: space-evenly;
        align-items: flex-start;
        align-content: flex-start;
        flex-wrap: wrap;
    }
    #box div{
        width: 50px;
        color:white;
        background: red;
    }
    </style>
  • html
<body>
    <div id="box">
        <div>测试文本</div>
        <div>测试文本测试文本</div>
        <div>测试文本测试文本测试文本</div>
        <div>测试文本</div>
        <div>测试文本测试文本</div>
        <div>测试文本</div>
        <div>测试文本测试文本</div>
        <div>测试文本测试文本测试文本</div>
        <div>测试文本</div>
        <div>测试文本测试文本</div>
    </div>
</body>
  • 没加
    在这里插入图片描述

  • 添加后
    在这里插入图片描述

02_1作用在flex子项上的css属性

  • 示例:
    在这里插入图片描述
取值含义
order可以通过设置order改变某一个flex子项的排序位置。所有的flex子项的默认order属性是0. 值越大越往后排
flex-grow属性中的grow是扩展的意思,扩展就是flex子项所占据的宽度,扩展所侵占的空间就是去除元素外的剩余的空白的间隙。默认值为0.
flex-shrink属性中的shrink是收缩的意思,flex-shrink主要处理当flex容器空间不足时候,单个元素的收缩比例,默认值为1.
flex-basisflex-basis定义了在分配剩余空间之前元素的默认大小
flex是flex-grow,flex-shrink,flex-basis的缩写
align-self指控制单独某一个flex子项的垂直对齐方式
  • 给第一个子项设置order:1;
    在这里插入图片描述

  • flex-grow

    • 给第一个子项添加flex-grow: 1;。当设置的值">=1"时第一个子项会把本来在右边的空白区域占满
      在这里插入图片描述
    • 值为0.5时就占一半
      在这里插入图片描述
    • 每个子项都设置:flex-grow: 0.25;,则每个子项平分空白区域
      在这里插入图片描述
  • flex-shrink
    当空间不足时默认收缩,(下图是没有给子项添加flex-shrink的)
    当空间不足是默认收缩

    • 给第一项添加flex-shrink: 0;,不收缩
      在这里插入图片描述
    • 给第一项添加flex-shrink: 2;,数值越大收缩越明显在这里插入图片描述
  • flex-basis

    • 给子项设置flex-basis: 30px;就相当于设置了width: 30px;
    • 当子项同时设置了flex-basis: 150px; width: 100px;,width的优先级低于flex-basis的,此时显示的宽度是150px
    • 当父容器宽度不足,flex-basis值过大时,flex-basis的优先级小于父容器宽度
  • flex-grow、flex-basis、flex-shrink的混合写法

    • flex: 0 1 auto;(默认值),分别对应flex-growflex-shrinkflex-basis
    • 优先级
      在这里插入图片描述
      • 当给子项单独添加flex-grow: 0;,且子项设置了宽度时,flex-grow优先级低不起作用
        在这里插入图片描述
      • 给子项单独添加flex: 0;,且子项设置了宽度时,flex优先级高起作用
        在这里插入图片描述
      • 当时flex-grow/flex设置的值大于0时,flex-grow/flex优先级都比宽度高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值