CSS-Flex布局
程序员文章站
2023-10-27 09:01:46
Flex布局 对于我们平常遇到的问题的解决方法。 1.在父容器中的垂直居中。 2.使容器内的子项占据等量的空间(宽、高)。 3.使容器内的列等高排列。 在线查看Flex布局示例及其属性使用,效果展现: "在线示例" 下面是各个属性的描述: 设置容器的display属性为flex,如果是行内元素使用 ......
flex布局
对于我们平常遇到的问题的解决方法。
1.在父容器中的垂直居中。
2.使容器内的子项占据等量的空间(宽、高)。
3.使容器内的列等高排列。
在线查看flex布局示例及其属性使用,效果展现:
在线示例
下面是各个属性的描述:
.box{ display:flex; }
设置容器的display属性为flex,如果是行内元素使用inline-flex
.
flex-direction
定义子项如何排列。
.box{ flex-direction:row; } row:x轴排列,从左到右, row-reverse:x轴排列,从右到左 column:y轴排列,从上到下 column-reverse:y轴排列,从下到上
flex-wrap
定义子项超出时,换行方式。
.box{ flex-wrap:wrap; } wrap:换行 nowarp:不换行 wrap-reverse:换行,反转排列
flex-flow是flex-direction/flex-wrap的缩写。
justify-content
定义子项横向排列时的样式。
.box{ justify-content:center; } flex-start:靠左 flex-end:靠右 center:居中 space-between:沿x轴均匀分配,两边不留空 space-around:沿x轴均匀分配,两边留空
align-items
定义子项纵向排列时的样式。
.box{ align-items:center; } flex-start:靠上 flex-end:靠下 center:垂直居中 **问题一 baseline:按照子项中第一行文本位置为基准水平线 stretch:所有子项纵向占满空间。 **问题三
子项的高度不能写死,不然stretch无效。
align-content
有多行子项时的排列样式(即 flex-wrap属性必须是wrap)
.box{ align-content:center; } flex-start:靠上 flex-end:靠下 center:垂直居中 space-between:沿y轴分配,上下边不留空 space-around:沿y轴均匀分配,上下边留空 stretch:纵向铺满
子项只有一行时不生效。
子项item高度不能写死,不然stretch不生效。
项目的属性
order
定义子项的排列顺序,默认0。数值越小越靠前
.box-item:nth-of-type(1){ order:-1; } .box-item:nth-of-type(3){ order:2; }
flex-frow
定义项目的放大比列,默认0不放大。
.box-item{ flex-grow:1; } 值一样时平均分配空间。 值不一样时按值比例分配。
flex-shrink
定义项目的缩小比列,默认1缩小。为0时不缩小。
.box-item:nth-of-type(2){ flex-shrink:0; }
flex-basis
定义项目在占据多余空间时的分配。auto为原大小
.box-item:nth-of-type(3){ flex-basis:300px; }
分配的大小超过主轴空间,按比列分配空间。
flex 是flex-grow/flex-shrink/flex-basis的缩写。
align-self
与容器的align-item对应,定义子项自己的排列位置。默认auto
.box-item:nth-of-type(2){ align-self:flex-start; } .box-item:nth-of-type(3){ align-self:flex-end; } .box-item:nth-of-type(3){ align-self:center; } auto:默认 flex-start:靠上 flex-end:靠下 center:垂直居中 baseline:以及元素第一行文本为基准线 stretch:占满纵向空间。
示例github地址:
项目地址