• flex布局入门讲解


    flex布局

    特点

    • 开启了flex布局的元素叫flex container(弹性容器)
    • flex container里面的直接子元素叫做flex item(弹性项目)

    当flex container中的子元素变成了flex item时,具有以下特点

    • flex item的布局将受flex container属性的设置来进行控制和布局
    • flex item 不再严格区分块级元素和行内元素
    • flex item默认情况下时包裹内容的,但是可以设置宽度和高度

    设置display属性为flex或者inline-flex可以成为flex container

    • flex: flex container以block-level形式存在
    • inline-flex: flex container以inline-level形式存在

    flex item的宽度

    flex container的属性

    flex-direction

    设置主轴的方向:

    • row(默认):主轴从左往右
    • row-reverse:主轴从右往左
    • column:主轴从向至下
    • column:主轴从下至上

    flex-wrap

    设置当项目在一行排不下时候是否换行(flex container是单行显示还是多行)

    • nowrap(默认):单行(不换行)
    • wrap:多行(换行)
    • wrap-reverse:多行(换行,顺序是由下到上)

    flex-flow

    flex-direction和flex-wrap的简写,顺序任意,每个值不是必写

    flex-flow:<‘flex-direction’> || <‘flex-wrap’>

    justify-content

    设置项目在主轴(main axis)的对齐方式

    • felx-start(默认值):与main start对齐
    • flex-end:与main end对齐
    • center:居中对齐
    • space-between:
      • flex items之间的距离相等
      • 与main start、main end两端对齐
    • space-around:
      • flex items之间的距离相等
      • flex items与main start、main end之间的距离是flex items(相邻的两个item之间的距离)之间距离的一半
    • space-evenly:兼容性差
      • 两端也有空隙,并且所有的空间进行等分

    align-items

    设置(单行)flex item(项目)在cross axis(交叉轴)的对齐方式

    • normal(默认):在弹性布局中,效果和stretch一样
    • stretch:当flex item 在cross axis 方向的size为 auto时,会自动拉伸至填充flex container(项目的高度是auto时才生效)
    • flex-start:与cross start对齐
    • flex-end:与cross end对齐
    • center:居中对齐
    • baseline:与基准线对齐

    align-content

    设置多行flex items在cross axis上的对齐方式,用法与justify-content类似

    • stretch(默认值):与align-items的stretch类似
    • flex-start:
    • flex-end:
    • center:
    • space-between
    • space-around
    • space-evenly:兼容性差

    flex-item的属性

    flex-order

    设置flex item的排布顺序

    • 可以设置任意整数,值越小就越排在前面
    • 默认值是0

    align-self

    设置flex item在across axis的位置

    • 默认值是normal

    flex-grow

    设置flex items如何扩展(拉伸/成长)

    说明:当一个容器里面的项目排列完成,还剩下空间的时候,这些剩下的空间是不会分给项目,让项目填充的,如果设置了flex-grow:1,那么剩余的空间将都会分给设置这个属性的项目,如果一个项目设置了flex:1,一个设置了flex:2,那么剩余的空间将会被等分成3分,设置1的得到1份,设置2的得到2份

    • 可以设置任意非负的数字(正小数、正整数、0)
    • 默认值是0
    • 当flex container在main axis方向有剩余的size时,flex-grow属性才会生效
    • 如果所有flex items的flex-grow总和sum超过1,每个flex item扩展的四则为
      • flex container的剩余size*flex-grow/sum
    • flex items扩展后的最终size不能超过max-width/max-height
      • 比如给一个项目设置了max-width\max-height,那么项目所分配的空间和项目的宽/高之和最多就是max-width\height

    flex-shrink

    决定了flex items如何收缩(缩小)

    当项目在容器内水平排不下的时候,项目是否会被压缩

    • 可以设置任意非负数字
    • 默认值是1
    • 当flex items在main axis方向上超过flex container的size,flex-shrink属性才会生效
    • 如果所有flex items的flex-shrink总和超过1,每个flex item收缩的size为
      • flex items超出flex container的size*收缩比例/所有flex items的收缩比例之和
    • flex items收缩后的最终size不能小于min-width/min-height

    flex-basis

    用来设置flex items 在main axis方向上的basis size(基础大小)

    默认值是auto

    举例: 当给一个项目设置了width,里面的内容是一个英文单词的时候,当单词在最后一个的时候放不下整个单词会直接换行,如果设置了flex-basis时候,则不会换行,会自动拉伸当前项目的宽度,知道单词能放下

    觉得flex-item最终的basis size的因素(优先级从上到下)

    • max-width/height、min-width/height
    • flex-basis
    • width\height
    • 内容本身的size

    flex

    是felx-grow | | flex-shrink | | flex-basis的简写,flex属性可以指定1、2、3个值

    • 值只有一个无单位的数字时,会被当作flex-grow
    • 值是一个有效的宽度的时候,会被当作flex-basis
    • 关键字 none 、auto、initial
  • 相关阅读:
    webserver——三、数据库
    【目标检测】雷达目标CFAR检测算法
    fastapi 在中间件中获取requestBody
    危险的粒子 马蹄集
    【深度学习实验】注意力机制(三):打分函数——加性注意力模型
    【数据库】Sql Server 2022通过临时表和游标遍历方式逻辑处理获取目标数据
    3D WEB轻量化引擎HOOPS:促进CAD软件的创新与协作
    Opencv项目实战:03 扫描二维码&条形码
    【C++】多态
    【SpringCloud微服务实战02】Ribbon 负载均衡
  • 原文地址:https://blog.csdn.net/qq_51558433/article/details/126060134