css面试总结(3)— flex布局

253 阅读3分钟

什么是flex布局?

  • flex布局是一种用于按行或列布局元素的一维布局方法。(弹性盒模型)

flex 布局出现的目的或意义

  • 传统布局,基于盒子模型,依赖于display + position + float 属性实现,非常的不方便,而且有一些效果实现起来比较麻烦,比如垂直居中,而使用flex布局实现起来比较方便
  • flex 布局更倾向于响应式布局,用于实现响应式布局非常方便

flex布局 基本概念

1. 开启方式

  • 给父元素的display属性设置为flex
父元素 {
    display: flex;
}

2. 布局说明:主轴与交叉抽

image.png

  • 主轴(main axis) 是沿着 flex 元素放置的方向延伸的轴(比如页面上的横向的行、纵向的列)。该轴的开始和结束被称为 main start 和 main end
  • 交叉轴(cross axis) 是垂直于 flex 元素放置方向的轴。该轴的开始和结束被称为 cross start 和 cross end

注:我们给开启flex的元素,称为flex容器,其中的子元素称为flex项(item)

3. flex 容器上的属性

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

    3.1 flex-direction: 决定了主轴的方向

    • row(默认值):主轴水平方向,起点在左端
    • row-reverse:主轴水平方向,起点在右端
    • column:主轴垂直方向,起点在上沿
    • column-reverse:主轴垂直,起点在下沿
    flex.png

    3.2 flex-wrap: 决定是否换行

    • nowrap(默认):不换行
    • warp:换行,第一行在上
    • wrap-reverse:换行,第一行在下 wrap.png

    3.3 flex-flow: flex-direction 与 flex-wrap的简写形式

    • 默认值为 row nowrap

    3.4 justify-content: 规定了flex项在主轴上的如何对齐

    • flex-start(默认值):左对齐(默认主轴方向从左向右)
    • flex-end:右对齐
    • center:居中
    • space-between:两端对其
    • space-around:每项之间以间距相等,以空白填充,两端也有一半的空白部分 image.png

    3.5 align-items:规定了flex项在交叉抽上的如何对齐

    • stretch(默认值):撑满整个容器的高度。(在没有设置flex项高度的情况下)
    • flex-start:交叉抽的起点对齐
    • flex-end:交叉抽的终点对齐
    • center:交叉抽的中点对齐
    • baseline:flex项的第一行文字的基线对齐 image.png

    3.6 align-content:规定多根轴线时的对齐方式(当轴线不止一根时,有效,即,flex项不止一行时生效)

    • stretch(默认值):轴线占满整个交叉轴
    • flex-start: 与交叉轴的起点对齐
    • flex-end:与交叉轴的终点对齐
    • center: 与交叉轴的中点对齐
    • space-between:与交叉轴的两端对齐,轴线之间间隔平均分布
    • space-around:与space-between类似,但两侧也有一半的空白部分 image.png

4. flex项(item)的属性

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

    4.1 order:定义flex项的排列顺序

    • order 值越小排列约靠前,默认为0(number类型,整数) image.png

    4.2 flex-grow:定义flex项的放大比例

    • 默认值为0,即不进行放大
    • 不为0时,会把空间按flex-grow的值分配(默认不保留容器的剩余空间) image.png

    4.3 flex-shrink:定义了flex项的缩小比例

    • 默认值为1,即空间不足时,将该flex项缩小,值为0时不缩小 image.png

    4.4 flex-basis: 规定flex项在主轴方向上的大小,可设置为百分比值

    • 默认值为 auto
    • 可选值 content 基于flex项元素的内容自动调整大小
    • 若 flex项 同时设置了width,和 flex-basis,则flex-basis具有更高的优先级

    4.5 flex: flex-grow,flex-shrink与flex-basis的简写

    • 默认值: 0 1 auto,后两个属性可选
    • flex: 1 代表的意思是(1 1 auto)
    • flex: none 代表的意思是(0 0 auto)

    4.6 align-self:规定某一个flex项的对齐方式,可以覆盖align-items属性

    • auto(默认值):表示继承父元素的align-items属性值,若没有父元素,则值同stretch
    • 其他5个属性值与 align-items 的属性值一样 image.png 内容来源:www.ruanyifeng.com/blog/2015/0…