弹性布局是新一代的布局方式,传统布局中使用浮动布局会给咱们带来很多弊端,如CSS代码高度依赖于HTML代码结构等等,下面我将用几个例子让你们快速学会弹性布局。css
PS:弹性布局适用于较简单的场景,过于复杂的场景能够尝试着使用CSS3的Grid布局,弹性布局在PC端中还存在兼容性问题,移动端中无兼容性问题,能够放心使用。html
css3为新增的弹性布局提供了多个属性,分别为弹性盒模型的容器属性,以及弹性盒子中子元素的子元素属性。css3
css3中为display新增了两个属性值,分别为flex、inline-flexgit
display:flex; /*将容器声明为一个弹性盒模型且容器表现为块级元素*/
display:inline-flex; /*将容器声明为一个弹性盒模型且容器表现为行内元素*/
复制代码
容器display:block;github
flex-direction能够设置主轴的方向,默认值为row。bash
flex-direction:row | row-reverse | column | column-reverse布局
.box {
width:500px;
height:500px;
margin:100px auto 0 auto;
background: #eee;
display: flex;
flex-direction: row;
}
.box-item {
width:200px;
height:200px;
line-height:200px;
text-align: center;
color:#fff;
font-size:20px;
}
复制代码
从上面能够看出容器的宽高都是500px,子元素的宽高都是200px,那若是咱们一行放3个元素,元素会像浮动布局那样换行吗?flex
flex-wrap:nowrap | wrap | wrap-reversespa
justify-content控制主轴的对齐方式,默认向主轴开始起点位置对齐,值为flex-start。3d
justify-content:flex-start | flex-end | center | space-between | space-around
align-items控制垂直轴的对齐方式,默认向主轴开始起点位置对齐,值为flex-start。
align-items:flex-start | flex-end | center | baseline | stretch
刚刚说完了垂直轴只有一个元素的状况,若垂直轴有两个元素时,align-items还能起做用吗? 为了使垂直轴存在两个元素,咱们首先设置自动换行
flex-wrap:wrap;
复制代码
这时咱们要用align-content。 align-content:flex-start | flex-end | center | space-between | space-around
order属性可用于设置子元素的位置,order的值越小排在越前面,默认值为0,能够设置负值。
//设置第三个子元素的order为-1
.box-item3 {
background: green;
order:-1;
}
复制代码
弹性布局简单易上手,使用熟练以后会发现只须要不多的代码就能够实现之前复杂的布局,弹性布局最重要的就是两条轴线,这个必定要熟练掌握,不少属性的方向都与两条轴线有关。
若是这篇文章帮到你了,以为不错的话来点个Star吧。 github.com/lizijie123