justify/align-items
"与"justify/align-content
"。
我的困惑在于作者声称"-content
"系列存在的原因是:
我认为这适用于两个系列,而不仅仅是"有时您的网格的总大小可能小于其网格容器的大小。
-content
"系列。请问有人能解释一下吗?最好使用一些图形示例来说明。
让我们先澄清一下术语:
网格容器是包含网格(Grid)和网格项(Grid Items)的整体容器。它确立了一个网格格式化上下文(Grid Formatting Context)(与其他格式化上下文,如弹性或块相对)。
网格是由相互交叉的垂直和水平线组成的集合,将网格容器的空间划分为网格区域(Grid Areas),这些区域是包含网格项的方框。
网格项是网格容器中代表流动内容(即非绝对定位的内容)的方框。
以下是来自W3C的插图:
justify-content
和align-content
属性用于定位网格。
justify-self
,justify-items
,align-self
和align-items
属性用于定位网格项。
关于你问题中描述的问题:
我对作者声称"
-content
"集合会存在的原因感到困惑:"有时您的网格的总大小可能小于其网格容器的大小"
好吧,你可以在插图中看到网格比网格容器小。
因此,还有剩余空间,容器能够将这个空间分配给垂直居中(align-content: center
)和右对齐(justify-content: end
)的网格。
多余的空间还可以使网格用像space-around
,space-between
和space-evenly
这样的值进行间距设置。
然而,如果网格大小等于容器大小,则没有免费空间,align-content
/ justify-content
将没有效果。
以下是规范中的更多内容:
10.3. 行轴对齐:属性
justify-self
和justify-items
网格项可以使用网格项上的
justify-self
属性或网格容器上的justify-items
属性来在行维度上对齐。10.4. 列轴对齐:属性
align-self
和align-items
网格项也可以使用网格项上的
align-self
属性或网格容器上的align-items
属性来在块维度(垂直于行维度)上对齐。10.5. 网格对齐:属性
justify-content
和align-content
如果网格的外边缘与网格容器的内容边缘不相对应(例如,如果没有列是自适应大小),则网格跟踪根据网格上的
justify-content
和align-content
属性在内容框内对齐。
(强调添加)
justify-items
/align-items
,以及在项目上使用justify-self
/align-self
(覆盖容器设置),您可以对齐网格项目在网格容器中的位置。要对齐网格项内部的内容,您可以将每个项目作为 flex 容器,并将 flex 属性应用于内容。 - Michael Benjaminalign-content
和justify-content
,您可以对容器中的网格行和列进行对齐,以适应任何额外的空间。以下是一个您可以尝试的演示:https://jsfiddle.net/k5ebsac2/ - Michael Benjamin