FLEX布局(1)

135 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

基本简介

1.1.传统布局和flex布局

传统布局:兼容性好,但不能在移动端很好的布局

flex布局:操作方便,布局较为简单

1.2.基本原理

flex即为弹性布局,任何一个容器(块级或者行级元素)都可以使用

当给父盒子设为flex布局后,子元素的float,clear,vertical-align等元素会失效,不需要浮动

伸缩布局=弹性布局=flex布局

采用flex布局的元素中,它的所有子元素会自动成为容器成员,称为flex项目,子容器可以横向排列也可以纵向排列。

PS:通过给父元素添加flex属性,来控制子盒子的位置和排列方式

1.3.常见父项属性

主要有下面六个

flex-direction:设置主轴的方向

justify-content:设置主轴上的子元素排列方式

flex-wrap:设置子元素是否换行

align-content:设置侧轴上的子元素的排列方式(多行)

align-items:设置侧轴上的子元素排列方式(单行)
 
flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

3.1.flex-direction设置主轴方向

3.1.1.主轴和侧轴

给父级元素添加flex属性

默认主轴方向是x轴,水平向右

默认侧轴方向是y轴,水平向下

元素是跟着主轴排列的

3.2.属性值

主轴和侧轴会变化

row:默认值从左到右(行)

row-reverse:从右到左(翻转)

下面是把主轴设置为y轴 flex-direction:column

column-reserve:从下到上

3.2.justify-content设置主轴上子元素的排列方式

使用前一定要确定好主轴是哪个

flex-start:默认值 从头部开始 如果主轴是x轴,则从左到右
flex-end:从尾部开始排列(和`flex-direction`区分,该属性只会让子元素靠右,但顺序不会改变)
center:主轴居中对齐(如果主轴是x轴则水平居中)
space-around:平分剩余空间
space-between:先两边贴边 再平分剩余空间

3.3.flex-wrap设置子元素是否换行

flex默认情况下项目都排在一条线上,默认子元素不换行,如果父元素大小不够,会缩小子元素的大小。

nowrap:默认值,不换行
wrap:换行