【前端学习】CSS3弹性布局总结

今天用到弹性布局的时候,不小心忽略了弹性布局分为容器属性和项目属性
就比如我想让三个class=box的div在一行显示,我写了如下代码

.box{
	width: 100px;
	height: 100px;
	border: 1px solid red;
	background-color: blue;
	display: flex;
}

然而display:flex是应该设置给div父元素的属性,也就是容器的属性,应该这样写

body{
	display: flex;
}
.box{
	width: 100px;
	height: 100px;
	border: 1px solid red;			
	background-color: blue;		
}

发现对弹性布局掌握并不熟练,于是来做个总结

·基本概念

在弹性布局中,有两根轴线:
水平方向的主轴
垂直方向的交叉轴
Flex布局分项目与容器。 容器指的就是弹性盒本身(即父元素),项目指的是内部的子元素。

·容器属性

容器属性指的是放在容器选择器样式列表中的属性

display:flex;

拥有该属性的元素就是容器。
当该元素拥有该属性时,子元素的float、vertical等属性都将失效。子元素就是项目。所有的项目按照主轴的方向排列成一排。

flex-direction

该属性决定主轴的方向: 默认是row
可选值有: row、 column、 row-reverse、 column-reverse
row:默认值,水平从左到右排列
row-reverse: 水平从右到左排列
column:垂直 从上到下排列
column-reverse:垂直 从下到上排列

flex-wrap

该属性用于决定容器内的项目是否换行,以及如何换行
可选值: nowrap、wrap、wrap-reverse
nowrap 不换行
wrap 换行 往下排列
wrap-reverse 换行 往上排列

justify-content

该属性决定项目在容器的主轴上的排列方式
可选值:
flex-start (默认值) 靠左
flex-end 靠右
center 居中
space-between 开头的项目与结尾的项目是贴边的 中的空白平分
space-around 每一个项目的左右空白距离相等
space-evenly 每一个空白都相等

align-items

该属性决定项目在容器中的垂直方向的对齐
可选值:
stretch 默认值 上贴顶 下贴底
flex-start 贴顶
flex-end 贴底
center 居中
baseline 文本基线对齐

align-content

当有多根轴线时才会生效,决定多根轴线在容器中的排列方式
可选值:
stretch 默认值 表示填满
flex-start 贴顶
flex-end 贴底
center 居中
space-around 每一个轴线的空白距离相等
space-between 第一根轴线 贴顶 最后一根轴线 贴底 平分空白
space-evenly 每一个空白都相等

·项目属性

flex-grow

该属性决定项目的放大比例。
放大规则: 先计算容器宽度,再计算每一个项目的width、flex-basis、内容宽之和。剩余的部分按照每一个项目的flex-grow之和平分。每一个项目占自己的flex-grow值份。

flex-shrink

该值决定缩小比例
计算规则: 计算容器宽度A,计算所有项目的实际宽度之和B,如果B大于A。此时flex-shrink属性生效。
(B - A) / 所有项目的flex-shrink属性之和 = C。 就是shrink值为1所应当缩小的值。再每一个项目就缩小shrink值*C

flex-basis

该属性决定项目所占宽度,优先于width与内容
优先级: flex-basis > width > 内容宽

flex

该属性是一个融合属性 分别表示 flex-grow flex-shrink flex-basis
flex: 0 1 auto; 后两个属性可以省略
等价于
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;

order

该属性决定项目在容器中的排列顺序
默认值是1 越小越靠前

align-self

该属性决定项目在容器中的垂直方向的对齐方式,会覆盖父容器的align-items。
可选值:
stretch 默认值 上贴顶 下贴底
flex-start 贴顶
flex-end 贴底
center 居中
baseline 文本基线对齐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章