考虑柔性容器的主轴和交叉轴:
来源:W3C
要沿主轴对齐flex项,有一个属性:
要沿十字轴对齐flex项,有三个属性:
在上面的图像中,主轴是水平的,横轴是垂直的。这些是柔性容器的默认方向。
但是,这些方向可以很容易地与flex-direction
属性互换。
/* main axis is horizontal, cross axis is vertical */flex-direction: row;flex-direction: row-reverse;
/* main axis is vertical, cross axis is horizontal */flex-direction: column;flex-direction: column-reverse;
(十字轴始终与主轴垂直。)
我在描述轴的工作方式时的观点是,两个方向似乎都没有什么特别之处。主轴,十字轴,它们在重要性方面都是相等的,flex-direction
使来回切换变得容易。
那么为什么十字轴有两个额外的对齐属性呢?
为什么align-content
和align-items
合并为主轴的一个属性?
为什么主轴没有得到justify-self
属性?
这些属性有用的场景:
在flex容器的角落放置一个flex项目#box3 { align-self: flex-end; justify-self: flex-end; }
使一组flex项右对齐(justify-content: flex-end
),但让第一个项左对齐(justify-self: flex-start
)
考虑一个带有一组导航项目和一个徽标的标题部分。使用justify-self
,徽标可以向左对齐,而导航项目保持在最右边,整个事情可以平滑地调整(“弯曲”)到不同的屏幕尺寸。
justify-content: center
)并将相邻项目与容器边缘对齐(justify-self: flex-start
和justify-self: flex-end
)。注意,值space-around
和space-between
在如果相邻项具有不同的宽度,则justify-content
属性不会将中间项保持在容器的中心。
#container {display: flex;justify-content: space-between;background-color: lightyellow;}.box {height: 50px;width: 75px;background-color: springgreen;}.box1 {width: 100px;}.box3 {width: 200px;}#center {text-align: center;margin-bottom: 5px;}#center > span {background-color: aqua;padding: 2px;}
<div id="center"><span>TRUE CENTER</span></div>
<div id="container"><div class="box box1"></div><div class="box box2"></div><div class="box box3"></div></div>
<p>note that the middlebox will only be truly centered if adjacent boxes are equal width</p>
在撰写本文时,在flexbox规范中没有提到justify-self
或justify-items
。
然而,在CSS框对齐模块中,这是W3C未完成的建议,即建立一组通用的对齐属性以用于所有盒子模型,其中包括:
来源:W3C
你会注意到justify-self
和justify-items
正在被考虑……但不是Flexbox。
最后,我将重申主要问题:
为什么没有“证明项目”和“证明自我”属性?