CSS布局

198 阅读2分钟

Flex布局

flex 是 flexible box 的缩写,意为弹性布局,用来为盒模型提供灵活性。

它是发生在父容器和子容器之间的布局关系。

// 使用 flex 布局
.box {
    display: flex; // 行内元素使用inline-flex
}

属性

父容器属性

  • flex-direction:指定项目的排列方向
  • flex-wrap:项目放不下时如何换行
  • flex-flow:上面两个的简写
  • align-items:项目在交叉轴的对齐方式
  • justify-content:项目在主轴上的对齐方式
    • flex-start(默认值):左对齐
    • flex-end:右对齐
    • center:居中
    • space-between:紧挨两端对齐,项目之间的间隔相等
    • space-around:项目之间的距离是项目到边框的距离的两倍
  • align-content:指定多根轴线(多行)的对齐方式。如果项目只有一行则不起作用

子容器属性

  • order:定义项目的排列顺序,数值越小越靠前,默认为 0

  • flex-grow:项目的放大比例,默认为 0(表示存在剩余空间也不放大)

  • flex-shrink:项目的缩小比例,默认为 1

  • flex-basis:在分配多余空间之前,项目占据的主轴空间大小

    • 优先级:max-width/min-width > flex-basis > width
  • flex:上面三个的简写,默认值为 0 1 auto

    • 该属性有两个快捷值:auto(1 1 auto)、none(0 0 auto)
  • align-self:允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items

参考

Grid布局

网格布局(grid)将网页划分成一个个网格,可以任意组合不同的网格进行布局。

// 使用 grid 布局
.box {
    display: grid; // 行内元素使用inline-grid
}

属性

父容器属性

  • grid-template-rows:划分行

  • grid-template-columns:划分列

  • grid-row-gap:行间距

  • grid-column-gap:列间距

  • grid-gap:上面两个的简写

  • grid-template-areas:指定区域

// ab、c三个区域
grid-template-areas: 'a a a'
                     'b b b'
                     'c c c';
// 顶部header、底部footer、中间main和sidebar
grid-template-areas: "header header header"
                     "main main sidebar"
                     "footer footer footer";
  • grid-auto-flow:项目放置顺序,默认为先行后列

  • align-items:设置单元格内容的垂直位置

  • justify-items:设置单元格内容的水平位置

  • place-items:上面两个的简写

  • align-content:指定全部网格在容器中的垂直位置

  • justify-content:指定全部网格在容器中的水平位置

  • place-content:上面两个的简写

子容器属性

  • grid-column-start:左边框所在的垂直网格线

  • grid-column-end:右边框所在的垂直网格线

  • grid-column:上面两个的简写

  • grid-row-start:上边框所在的水平网格线

  • grid-row-end:下边框所在的水平网格线

  • grid-row:上面两个的简写

  • grid-area:指定项目放入哪一个区域

  • justify-self:指定单元格内容的水平位置

  • align-self:指定单元格内容的垂直位置

  • place-self:上面两个的简写

参考