css中的flex布局

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-08 12:36:43

flex布局

任何一个容器都可以指定为flex布局

当父盒子设为flex布局后,子元素的float、clear、vertical-align属性将失效

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

采用flex的元素,称为Flex容器(flex container)简称”容器“。

它的所有子元素自动成为容器成员,成为Flex项目(flex item)简称“项目”

启用flex布局:给标签加上样式:display:flex;

如果没有设置,是没有flex布局的!!!!!

常见的父项属性:

1、flex-direction设置主轴方向

flex布局,分为主轴和侧轴方向也称行和列、x轴和y轴

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

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

元素跟着主轴排列

属性值:row:默认,为水平方向,相当于float:left

row-reverse:水平反方向,相当于float:right,即从右到左

column:垂直方向,即从上到下

column-reverse:垂直反方向,即从下到上

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

使用该属性之前一定要确定好主轴方向

属性值:flex-start:默认值,从头部开始,如果主轴是x轴,则从左到右;如果主轴是Y轴,则从上到下

flex-end:从尾部开始排列,如果主轴是x轴,则子元素贴着右边,但是顺序不变 ,如果主轴是y轴,子元素就贴着下边

center:在主轴居中对齐(如果主轴是X轴则水平居中)

space-around:平分剩余空间,平分父元素的空间,每个子元素之间的间距一样

space-between:先两边贴边,再平分剩余空间:父元素里面的子元素两边贴着边缘,剩余的子元素平分剩下的空间

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

默认情况下,子元素是不换行的,如果父元素一行装不下,会缩小子元素的宽度,放到父元素空间里面。

属性值:nowrap:默认值,不换行

wrap:换行

4、align-items设置侧轴(默认侧轴为y轴)上的子元素排列方式(单行)

设置子项在侧轴上的排列顺序,用于子元素是单行的情况下,即子元素不换行

属性值:flex-start:默认值,从侧轴的头部开始排列

flex-end:从侧轴的尾部开始排列

center:在侧轴中垂直居中显示

stretch:拉伸:如果子元素设置高度,设置stretch就没有变化,只有当子元素没有设置高度或者高度等于auto时,子元素的高度会被拉伸到和父元素一样高

baseline:各个Flex Item相对于基线对齐。

A .若Flex Item内部没有任何文本内容,则Flex Item在Flex Container的顶端 且各个Flex Item之间底部对齐。 B .若Flex Item内部具备文本内容,则各个Flex Item相对于文本基线对齐

5、align-content 设置侧轴上的子元素的排列顺序(多行)

设置子项在侧轴上的排列顺序,只能用于多行的情况下,即子元素换行,在单行情况下没有效果

属性值:flex-start:默认值,从侧轴的头部开始排列

flex-end:从侧轴的尾部开始排列

center:在侧轴中垂直居中显示

space-around:子项在侧轴平分剩余空间

space-between:子项在侧轴先分布在两头,再平分剩余空间

stretch:设置子项元素高度平分父元素高度,跟单行效果差不多。如果子元素设置高度,设置stretch就没有变化,只有当子元素没有设置高度或者高度等于auto时,子元素才会平分父元素的高度

*****注意align-items和align-content的区别

flex-flow属性是flex-direction和flex-wrap属性的复合属性,相当于flex-direction和flex-wrap的简写

例如:flex-flow:row wrap;

子项常见属性

1、flex属性

定义子项目分配剩余空间,用flex来表示占多少份数

flex: <number>; // flex 的值是数字

flex:1;

2、align-self控制子项自己在侧轴的排列方式

align-self属性允许单个项目有与其他项目不一样的对齐方式,可以覆盖align-items属性

例如:align-self:flex-end;

3、order属性定义子项的排序顺序(前后顺序)

数值越小,排列越靠前,默认值为0

例如order: -1;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!