flex布局

139 阅读5分钟
  • flex布局:弹性布局

    • 1、display:flex;将 父元素设置为弹性盒子(给父元素设置 控制子元素排版的布局 内部的直系子级元素成为弹性元素 )

      • 称父元素为弹性容器,子元素为弹性元素,一个元素既可以是弹性元素,同时也可以是弹性容器

      • 默认display: flex; 对外展示为block(块级)特性,对内子元素拥有弹性元素特性

      • display:inline-flex; 对外展示为inline-block(行内块)特性,对内子元素拥有弹性元素特性

      • 子元素: 水平排列 不独占整行 可以设置宽高 margin padding生效

      • 子元素不固定高度(由内容撑开时,默认会占父级高度的100%)

    • 2、flex-direction设置子盒子的排列方向(设置 主轴方向)

      • 默认: row 主轴水平向右、侧轴垂直向下

      • row-reverse: 主轴水平向左、侧轴垂直向下

      • column: 主轴垂直向下、侧轴水平向右

      • column-reverse: 主轴垂直向上,侧轴水平向右

    • 3、flex-wrap: nowrap;默认子元素不换行展示 在主轴上被压缩

    • 4、 justify-content子元素主轴上排列属性

      • justify-content: flex-start;默认

      • center 居中展示

      • flex-end在主轴末尾位置展示

    • 5、align-items单行子元素在侧轴上的布局属性

      • align-items: stretch; 默认(如果子元素没有设置高度 将拉伸到父元素高度100%)

      • flex-start center flex-end

      • align-content: flex-start/center/flex-end(将子元素挤在一起来排列)

      • space-between/space-evenly/space-around(将子元素分散在侧轴排列)

    • 分散式布局

      • space-around 相当与所有元素都拥有相同的左右margin

      • space-between 两侧元素靠主轴两边排列 中间的元素平分空间

      • space-evenly 两侧以及元素之间的间距完全相等

      • 多行子元素分散式布局方案(align-content一般肯定是配合flex-wrap: wrap;这条属性来使用 适应与子元素换行展示后拥有多行的时候的布局)

    • 子元素在父元素内垂直水平居中的方案:

      • 父元素设置

        • display: flex;

        • justify-content: center;

        • align-items: center;

    • flex沿主轴的排列方式

      • 1. 将 父元素 设置为 弹性盒子

        • flex-wrap: wrap;
          • 换行 默认不换行 nowrap/wrap/wrap-reverse(反向换行,通过这个属性以及flex-direction方向设置搭配使用可以实现更多的排列需求)

      • 2、flex-direction: row;设置 子盒子的排列方向(设置 主轴方向)

        • row: 默认 主轴水平向右、侧轴垂直向下

        • row-reverse: 主轴水平向左、侧轴垂直向下

        • column: 主轴垂直向下、侧轴水平向右

        • column-reverse: 主轴垂直向上,侧轴水平向右

      • 3、justify-content:设置 沿主轴的排列方式

        • flex-start: 默认排列方式 从主轴的起点到主轴的终点

        • flex-end: 子元素 沿主轴方向 摆放到 结尾

        • center: 子元素 沿主轴方向 居中排列

        • space-around: 子元素 沿主轴方向 等分剩余空间

        • space-between: 子元素 沿主轴方向 两端对齐等分剩余空间

    • 子元素属性(只能用在弹性元素中)

      • 1、order:0;调整子元素自己的排列位置 默认是0 越小顺序越靠前 越大越靠后

      • 2、flex-grow: 0;默认值为0 负数无效 可以设置为小数

        • 弹性子元素的膨胀因子,代表该元素参与瓜分剩余空间的系数(份数) 设置了数值之后这个值会覆盖元素的宽度设置

        • 如果所有子元素的膨胀系数相加>=1份,那么会瓜分所有剩余空间 如果<1份按百分比去瓜分剩余空间

        • 所有子元素的膨胀系数相加<1份的情况下

          • 该元素自己分的的空间 = 自己的系数 * 总多余空间

        • 所有子元素的膨胀系数相加>=1份的情况下

          • 该元素自己分的的空间 =(自己的系数/总系数)* 总多余空间

      • 3、flex-shrink: 1; 弹性元素缩小因子 默认1 不换行的情况下当空间不够时 默认弹性元素会被压缩

        • 可以设置为0保证它不被压缩

        • 该元素自己被压缩的空间 =(自己的系数/总系数)* 总缺失部分

      • 4、flex:initial; flex是flex-grow,flex-shrink,flex-basis的缩写/简写

        • 默认 initial : 0 1 auto

        • none(钢铁直男): 0 0 auto (也可以写成flex:0;)

        • inhert: 继承

        • auto: 1 1 auto (也可以写成flex:1;)

      • 5、flex-basis:auto; 在分配多余空间前,子元素占据主轴的空间,浏览器根据这个属性来计算弹性盒子是否有剩余空间

        • 可以使用百分比及其他单位(px em rem)来定义宽度 负值无效

      • 6、align-self: auto; 默认auto

        • 子元素控制自己在侧轴上的排列方式 可以覆盖父元素align-items的设置

        • flex-start flex-end center

  • css3计算属性 calc()

    • 运算符左右两边必须有空格 100% - 100px 可以两个不同的单位计算

    • + - 加减法必须都有单位

    • * / 乘除法 只能写一个单位 而且必须是前面的被除数写单位

    • margin-left: calc(1000px / 2);

  • 滚动条样式设置

    • 轨道背景及整体大小

      • .box::-webkit-scrollbar {

      • width: 6px;

      • height: 6px;

      • background-color: rgba(240, 240, 240, 1);

      • background-color: red; }

    • 定义滚动条轨道 内阴影+圆角

      • .box::-webkit-scrollbar-track {

      • border-radius: 10px;

      • background-color: rgba(240, 240, 240, .5);

      • background-color: green;}

    • 定义滑块 内阴影+圆角

      • .box::-webkit-scrollbar-thumb {

      • border-radius: 10px;

      • box-shadow: 0 0 0px skyblue inset;

      • background-color: skyblue;}