简介
flex:
- 布局方式: flex 布局是一维布局,主要运用于对一个容器中内容的横向或纵向布局。
- 精细度: flex 布局无法对模块内的模块进行精细的位置控制。
- 适合布局: 适合于对一个模块内布局进行处理,内部的大小可以进行动态的控制。
grid:
- 布局方式: grid 布局是二维布局,主要运用于对一个容器中内容的横向和纵向布局。
- 精细度: grid 可以控制各个模块的精准位置,甚至可以在网格内重叠布局。
- 适合布局: 适合于对整个页面布局的处理,对页面的各个模块进行区域划分。
总结
在实际的开发中,需要将 flex 和 grid 进行联合使用,能够在 flex 布局内使用 grid 布局,从而弥补两种布局各自的缺点。
flex 和 grid 样式介绍
flex 样式介绍
父元素中的 css 样式
-
display: ——开启弹性布局,其子元素受影响
- flex | inline-flex ;
-
flex-direction: ——决定主轴的方向
- row(默认:从左到右)
- row-reverse(从右到左)
- column(从上到下)
- column-reverse(从下到上)
-
flex-warp:——是否换行
- nowrap(默认)
- wrap(换行)
- wrap-reverse(换行但行序从下往上)
-
flex-flow: —— 两个样式的简写形式
- flex-direaction && flex-wrap
-
justify-content: ——主轴上的对齐方式
- flex-start(默认:从主轴的起始点开始对齐)
- flex-end(从主轴的终止点开始对齐)
- center(从主轴的中心对齐)
- space-around(每个子模块两侧分配相同的空间: 导致首尾子模块两侧的大小是子模块间大小的一半)
- space-between(均匀排布,首个子模块位于起点,最后一个模块位于终点)
- space-evenly(每个子模块之间的间隔相同: 不会管首尾子模块两侧的大小)
-
align-item:——副轴(交叉轴)上的对齐方式
- stretch(默认: 如果子元素未设置高度或高度为 auto ,则占满整个父元素的高度)
- flex-start(从副轴的起始点开始对齐)
- flex-end(从副轴的终止点开始对齐)
- center(从副轴的中心对齐)
- baseline(以第一个子元素的第一行文字的基线对齐)
-
align-content: ——多轴对齐方式,需要父元素有多轴,否则不起作用
- flex-start(副轴的起点对齐)
- flex-end(副轴的终点对齐)
- center(副轴的中心对齐)
- space-between(副轴两端对齐:副轴之间的间距相同)
- space-around(副轴两侧空间相同: 每个副轴两侧的间隔相同)
- stretch(副轴上的元素对主轴进行一个平均切分)
子元素中的 css 样式
- order:——子元素的排列顺序:默认为0,数字越小排越前
- flex-grow:——子元素的放大比例:默认为0,该数值表示在所有子元素中此子元素占多少份,0表示为原子元素的大小
- flex-shrink:——子元素的缩小比例:默认为0, 该数值表示在父元素空间不足的情况下的缩小比例,0表示不进行缩小,但只有其他子元素都具有数值时该子元素才会保持原大小
- flex-basis:——子元素的固定大小:默认为 auto ,该数值表示该子元素固定的大小
- flex:——flex-grow、flex-shrink、flex-basis 的简写形式
- align-self:——表示该子元素自己的对齐方式:默认为 auto 表示继承父元素的 alig-items ,可以覆盖 align-items
- flex-start(从副轴的起始点开始对齐)
- flex-end(从副轴的终止点开始对齐)
- center(从副轴的中心对齐)
- baseline(以第一个子元素的第一行文字的基线对齐)
- stretch(如果子元素未设置高度或高度为 auto ,则占满整个父元素的高度)
grid 样式介绍
父模块中的 css 样式
- display:——开启网格布局,其子模块受影响
- grid | inline-grid
- grid-template-columns——多个数值,一个数值代表一列, auto 代表大小不固定 数值代表大小固定)
- auto | number
- grid-template-row——多个数值,一个数值代表一行, auto 代表大小不固定 数值代表大小固定
- auto | number
- grid-column-gap——列与列之间的间隔
- grid-row-gap——行与行之间的间隔
- grid-gap——每个模块间的间隔
- grid-template-areas——将单个或多个模块进行区域命名
grid-template-areas:'a a a' // 这位单独一个区域
'a c d' // 这行内分为三个区域
'e e f' // 这行分为两个区域
- justify-items——每个子模块内的内容的水平位置
- stretch(默认值)
- start
- end
- center
- align-items——每个子模块内的内容的垂直位置
- stretch(默认值)
- start
- end
- center
- place-items——两个样式的简写方法
- justify-items && align-items
- justify-content
- start
- end
- center
- stretch
- space-around(每个子模块两侧分配相同的空间: 导致首尾子模块两侧的大小是子模块间大小的一半)
- space-between(均匀排布,首个子模块位于起点,最后一个模块位于终点)
- space-evenly(每个子模块之间的间隔相同: 不会管首尾子模块两侧的大小)
- align-content
- start
- end
- center
- stretch
- space-around(每个子模块两侧分配相同的空间: 导致首尾子模块两侧的大小是子模块间大小的一半)
- space-between(均匀排布,首个子模块位于起点,最后一个模块位于终点)
- space-evenly(每个子模块之间的间隔相同: 不会管首尾子模块两侧的大小)
子模块中的 css 样式
- grid-column-start——单个模块开始的列分割数
- grid-column-end——单个模块结束的列分割数
- grid-row-start——单个模块开始的行分割数
- grid-row-end——单个模块结束的行分割数
- grid-column——两个样式的简写方法
- grid-column-start && grid-column-end
- grid-area——指定子模块放在哪一个区域
- justify-self——和 justify-items 用法相同,但仅作用单个子模块
- start
- end
- center
- stretch
- align-self——和 align-items 用法相同,但仅作用单个子模块
- start
- end
- center
- stretch
- place-self——两个样式的简写方法
- justify-self && align-self
例子:
item1{
grid-column-start:1;
grid-column-end:3;
}
** 上方代码具体展示为 **