基础知识和术语
原文链接:https://css-tricks.com/snippets/css/a-guide-to-flexbox/
父级(flex容器)的属性
#显示
这定义了一个flex容器; 内联或块取决于给定的值。它为所有直接的孩子提供了一个弹性环境。
.container {display: flex; /* or inline-flex */ }
请注意,CSS列对flex容器没有影响。
#flex-direction
这建立了主轴,从而定义了柔性物品放置在柔性容器中的方向。Flexbox是(除了可选包装)单向布局概念。将flex项目视为主要布置在水平行或垂直列中。
.container {flex-direction: row | row-reverse | column | column-reverse; }
row
(默认):从左到右在ltr
; 从右到左rtl
row-reverse
:从右到左ltr
; 从左到右在rtl
column
:相同row
但从上到下column-reverse
:相同row-reverse
但从下到上
#flex-wrap
默认情况下,flex项目都将尝试适合一行。你可以改变它,并允许项目根据需要用这个属性进行包装。
.container{flex-wrap: nowrap | wrap | wrap-reverse; }
nowrap
(默认):所有弹性项目将在一行上wrap
:flex项目将从上到下包装成多行。wrap-reverse
:flex项目将从下到上包装成多行。
#flex-flow(适用于:父Flex容器元素)
这是一个简写flex-direction
和flex-wrap
属性,它们一起定义了柔性容器的主轴和交叉轴。默认是row nowrap
。
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
#justify-content
这定义了沿主轴的对齐。当一条线上的所有弹性物品都不灵活或灵活但达到其最大尺寸时,它有助于分配剩余空间。当物品溢出时,它也对物品的对齐进行控制。
.container {justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly; }
flex-start
(默认):项目打包到起始行flex-end
:项目被打包到结束行center
:物品沿着这条线居中space-between
:项目均匀分布在行中; 第一项是在起始行,最后一行是最后一行space-around
:物品均匀分布在线上,周围有相同的空间。请注意,视觉上空间不相等,因为所有物品在两侧都有相同的空间。第一个项目将在容器边缘有一个空间单位,但下一个项目之间有两个空间单元,因为下一个项目有其自己的间距。space-evenly
:项目是分布式的,以便任何两个项目之间的间距(以及到边缘的空间)是相等的。
#align-items
这定义了flex项目沿当前行的横轴放置的默认行为。把它看作是justify-content
横轴(垂直于主轴)的版本。
.container {align-items: flex-start | flex-end | center | baseline | stretch; }
flex-start
:项目的跨起始边缘边缘放置在交叉起始线上flex-end
:物品的交叉边缘边缘放置在交叉线上center
:项目以交叉轴为中心baseline
:项目对齐,比如他们的基线对齐stretch
(默认):拉伸填充容器(仍然尊重最小宽度/最大宽度)
#align-content
当横轴上有额外的空间时,这会将柔性容器的线justify-content
对齐,类似于如何在主轴内对齐单个项目。
注意:只有一行flex项目时,此属性不起作用。
.container {align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
flex-start
:将行打包到容器的起始处flex-end
:将行打包到容器的末端center
:包装在容器中心的线条space-between
:线条均匀分布; 第一行是容器的开始,而最后一行是末尾space-around
:在每条线周围均匀分布均匀空间的线stretch
(默认):线拉伸占据剩余空间
children的属性
(弹性项目)
#order
默认情况下,Flex项目按源代码顺序排列。但是,该order
属性控制它们出现在柔性容器中的顺序。
.item {order: <integer>; /* default is 0 */ }
#flex-grow
这定义了Flex项目在必要时增长的能力。它接受作为比例的无单位价值。它规定了该项目应该占用的柔性容器内的可用空间量。
如果所有项目都flex-grow
设置为1,则容器中剩余的空间将平均分配给所有孩子。如果其中一个孩子的值为2,剩余空间将占用其他空间的两倍(或至少会尝试)。
.item {flex-grow: <number>; /* default 0 */ }
负数无效。
#flex-shrink
这定义了Flex项目在必要时收缩的能力。
.item {flex-shrink: <number>; /* default 1 */ }
负数无效。
#flex-basis
这将在分配剩余空间之前定义元素的默认大小。它可以是一个长度(例如20%,5rem等)或关键字。该auto
关键字的意思是“看看我的宽度或高度属性”(暂时由main-size
关键字完成,直到弃用)。该content
关键字的意思是“它根据项目的内容大小” -此关键字不能很好地支持呢,所以很难进行测试,并更难知道它的兄弟max-content
,min-content
和fit-content
做。
.item {flex-basis: <length> | auto; /* default auto */ }
如果设置为0
,则不会考虑内容的额外空间。如果设置为auto
,多余空间将根据其flex-grow
值分配。
#flex
这是速记flex-grow,
flex-shrink
和flex-basis
组合。第二个和第三个参数(flex-shrink
和flex-basis
)是可选的。默认是0 1 auto
。
.item {flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] }
建议您使用此速记属性,而不是设置单个属性。简而言之,智能地设置其他值。
#align-self
这允许align-items
为各个弹性项目覆盖默认对齐方式(或由其指定的对齐方式)。
请参阅align-items
说明以了解可用值。
.item {align-self: auto | flex-start | flex-end | center | baseline | stretch; }
请注意float
,clear
并且vertical-align
对Flex项目没有影响。(无效!!)