flex和grid布局属性

368 阅读5分钟

(从自己的CSDN博客迁移)

flex和grid布局属性,缩写属性无展开描述

flex布局

基本概念

采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。

容器默认存在两根轴:水平的主轴(main axis)垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。 项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

容器属性

1.flex-direction: row | row-reserve | column | column-reserve 决定主轴的方向(项目排列的方向):↑ | ↓ | → | ←

2.flex-wrap: nowrap | warp | warp-reserve 换行:不换行 | 换行 | 第一行在下方

3.justify-content:flex-start | flex-end | center | space-between | space-around 主轴上的对齐方式:左对齐 | 右对齐 | 居中 | 两端对齐| 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

4.aline-items:flex-start | flex-end | center | baseline | stresch 项目在交叉轴(Y轴)上的对齐方式:上对齐 | 下对齐 | 居中 | 按第一行文字对齐 | 如果项目未设置高度或设为auto,将占满整个容器的高度

项目属性

1.order:数字 自定义项目的排序

2.flex-grow:数字 项目的放大比例

3.flex-shrink:数字 项目缩小比例

4.flex-base:[length] | auto 定义项目占据的主轴空间大小,默认为auto

5.align-self:auto | flex-start | flex-end | center | baseline | stretch 允许单个项目有自己的对齐方式

grid布局

应用display:gird的元素就是网格容器,是所有网格项 的父元素。 网格线:网格结构的分界线 网格轨道:类似网格的行和列 网格单元格:一个格子就是一个单元 网格区域:任意数量的单元组成

容器属性

  • display
  • template-columns
  • grid-template-rows
  • grid-template-areas
  • grid-template
  • grid-column-gap
  • grid-row-gap
  • grid-gap
  • justify-items
  • align-items
  • place-items
  • justify-content
  • align-content
  • place-content
  • grid-auto-columns
  • grid-auto-rows
  • grid-auto-flow
  • grid

1.display

display: grid  //生成一个块级网络
diaplay:inline-gird	//生成一个内联网络

2.grid-templte-columns | gird-template-rows 用来定义网格的行和列,值表示网格轨道的大小

  grid-template-columns: 40px 50px auto 50px 40px;  //每个值都代表一列,设五个值就代表有五列
  grid-template-rows: 25% 100px auto;	//值可以用百分比表示,也可以设为auto
  //也可以为每一条网格线取名
  grid-template-columns: [first] 40px [line2] 50px [line3] auto [col4-start] 50px [five] 40px [end];
  grid-template-rows: [row1-start] 25% [row1-end] 100px [third-line] auto [last-line];
  //一条网格线可以有多个名字,比如row1-end,row2-start
  grid-template-rows: [row1-start] 25% [row1-end row2-start] 25% [row2-end];

3.grid-template-areas 通过指定名称来定义网格区域

gird-template-areas:
"head head"
"nav main"
"nav foot"

在这里插入图片描述 4.grid-template grid-template-rows ,grid-template-columns ,grid-template-areas 的简写属性

 grid-template:
 	 <grid-template-areas> | <grid-template-rows> / <grid-template-columns>;

5.grid-colunm-gap/grid-row-gap 规定网格线的大小,即单元格之间的间距

  grid-column-gap: <line-size>;
  grid-row-gap: <line-size>;

简写 grid-gap

  grid-gap: <grid-row-gap> <grid-column-gap>;

6.justify-items 设置单元格水平位置 start:左侧对齐 end:右侧对齐 center:水平居中对齐 stretch:填满单元格的宽度(默认值)

(用文字模拟一下,就差不多这个意思) 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 7.aline-items 设置垂直位置

start:顶部对齐 end:底部对齐 center:将网格项对齐到其单元格的垂直中间位置(垂直居中对齐) stretch:填满单元格的高度(默认值)

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

8.justify-content 网格总计的大小可能会小于网格容器的大小,justify-content可以设置网格在容器内的水平位置

start:左侧对齐 end:右侧对齐 center:水平居中对齐 space-around:网格项之间存在间隔,且大小一样而网格项和左右两端的间隔为一半 space-between:网格项之间存在间隔,且大小一样,左右两端没有空间 space-evenly:网格项之间,网格项和两端之间都存在间隔,且大小一样 stretch:调整 网格项(grid items) 的宽度,允许该网格填充满整个 网格容器 的宽度 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 9.align-content 在网格总大小小于网格区域的情况下设置网格的垂直位置

属性值:

start:左侧对齐

end:右侧对齐

center:垂直居中对齐

space-around:网格项之间存在间隔,且大小一样而网格项和上下两端的间隔为一半

space-between:网格项之间存在间隔,且大小一样,上下两端没有空间

space-evenly:网格项之间,网格项和上下两端之间都存在间隔,且大小一样

stretch:调整 网格项(grid items) 的宽度,允许该网格填充满整个 网格容器 的宽度

10.grid-auto-columns / grid-auto-rows 指定任何自动生成的网格轨道(grid tracks)(又名隐式网格轨道)的大小。

11.grid-auto-flow 如果你有一些没有明确放置在网格上的网格项(grid items),自动放置算法 会自动放置这些网格项。该属性控制自动布局算法如何工作。

属性值:

row:告诉自动布局算法依次填充每行,根据需要添加新行 (默认) column:告诉自动布局算法依次填入每列,根据需要添加新列 dense:告诉自动布局算法在稍后出现较小的网格项时,尝试填充网格中较早的空缺

子元素网格项属性

  • grid-column-start
  • grid-column-end
  • grid-row-start
  • grid-row-end
  • grid-column
  • grid-row
  • grid-area
  • justify-self
  • align-self
  • place-self

1.grid-column-start / grid-column-end / grid-row-start / grid-row-end 规定网格内网格项的位置

  • line:可以用数字或者网格线的名字来引用网格线
  • span number :规定该网格项跨越单元网格的数量
  • span name:该网格跨越到指定名字的位置
  • auto:自动放置
  grid-column-start: <number> | <name> | span <number> | span <name> | auto
  grid-column-end: <number> | <name> | span <number> | span <name> | auto
  grid-row-start: <number> | <name> | span <number> | span <name> | auto
  grid-row-end: <number> | <name> | span <number> | span <name> | auto

2.grid-column / grid-row 分别为 grid-column-start + grid-column-end 和 grid-row-start + grid-row-end 的简写形式。

grid-column | grid-row:<start-line> / <end-line> | <start-line> / span <value>;

3.grid-area 为网格项提供一个名称也可以做为grid-row-start + grid-column-start + grid-row-end + grid-column-end 的简写。

<name>:你所选的名称
<row-start> / <column-start> / <row-end> / <column-end>:数字或分隔线名称

4.justify-self/align-self 设置网格项再网格内的位置,与justify-items/align-items类似