目录
1.4、justify-content 水平(主轴上)对齐方式:
flex布局
概念
flex布局表示弹性布局,为盒状模型提供最大的灵活性.
使用时的注意事项
1、如果是Webkit内核的浏览器,需要加上 -webkit 前缀 2、在父级元素设置为flex布局后,子元素的float、clear、vertical-align属性都将失效,所以在使用flex布局时,不应该先设置完子元素布局后再使用。
1、Flex布局父容器属性
flex-direction / flex-wrap / flex-flow / justify-content / align-items / align-conten
1.1、flex-direction 设置主轴的方向
flex-direction:row | row-reverse | column | column-reverse;
row(默认值):主轴为水平方向,起点在左端。 row-reverse:主轴为水平方向,起点在右端。 column:主轴为垂直方向,起点在上沿。 column-reverse:主轴为垂直方向,起点在下沿
1.2、flex-wrap 设置子元素是否换行
默认情况下,项目都排在一条线(又称“轴线”)上。flex-wrap属性定义,flex布局中默认是不换行的
nowrap 默认值,不换行 wrap 换行
1.3、flex-flow
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box { flex-flow: <flex-direction> <flex-wrap>; }
1.4、justify-content 水平(主轴上)对齐方式:
justify-content:flex-start | flex-end | center | space-between | space-around;
flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,子元素间隔相等。
space-around:子元素两侧的间隔相等。
1.5、align-items属性
align-items属性定义项目在交叉轴上如何对齐。
.box { align-items: flex-start | flex-end | center | baseline | stretch; } flex-start:交叉轴的起点对齐。 flex-end:交叉轴的终点对齐。 center:交叉轴的中点对齐。 baseline: 项目的第一行文字的基线对齐。 stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
1.6、align-content属性
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; } flex-start:与交叉轴的起点对齐。 flex-end:与交叉轴的终点对齐。 center:与交叉轴的中点对齐。 space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 stretch(默认值):轴线占满整个交叉轴。
2、常用的项目属性
有6个属性可以设置在代码上
-
order
-
flex-grow
-
flex-shrink
-
flex-basis
-
flex
-
align-self
但是我们常用的有3个,本文讲解常用的项目属性
2.1 order属性
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
2.2 flex属性
flex 属性定义子项目分配剩余空间,用flex来表示占多少份
默认为0,可修改为1,auto
而我们常见的flex:1究竟是什么??
flex实际上是flex-grow、flex-shrink和flex-basis三个属性的缩写。
flex:1 ==> flex:1 1 auto
比如
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .box { height: 200px; display: flex; } #box1 { background-color: lightpink; flex: 1; } #box2 { background-color: rgb(255, 0, 0); flex: 1; } #box3 { background-color: rgb(6, 255, 89); flex: 3; } </style> </head> <body> <div class="box"> <div id="box1">box1</div> <div id="box2">box2</div> <div id="box3">box3</div> </div> </body> </html>
效果图为
2.3 align-self属性
align-self定义自身对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。