我真的很困惑 . 在查找在线资源和文档时,这些属性的大多数文档似乎都引用了Flex-box,而不是grid . 我不知道Flex-box中等效属性的文档对网格的适用性如何 .
所以,我尝试引用https://css-tricks.com/snippets/css/complete-guide-grid/,它定义如下:
justify-items - 沿着行轴对齐网格项内的内容
justify-content - 此属性沿行轴对齐网格
justify-self - 沿着行轴对齐网格项内的内容
但我仍然不明白它们之间的区别是什么 . 所以,我有3个问题要澄清 .
-
Flex框中的
justify-items
属性是否与Grid中的justify-items
属性相同?或者它们有什么不同? (换句话说,我可以重用Grid的Flex-box文档) -
(证明 - )内容,自我和项目有什么作用?
-
(理由 - )内容,自我和项目有何不同?
任何澄清将不胜感激 .
Edit: 由于每个人都不断给我提供Flex-box资源,我问的是css-grid,而不是flex-box .
4 回答
回答你的问题:
1
正如reiallenramos提到的,"The justify-self and justify-items properties are not implemented in flexbox. This is due to the one-dimensional nature of flexbox, and that there may be multiple items along the axis, making it impossible to justify a single item. To align items along the main, inline axis in flexbox you use the justify-content property." - MDN
2-3
这个从W3拍摄的屏幕非常出色地展示了它们的作用以及它们之间的差异 .
好知道:
有关更多信息和示例,我建议您查看:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout
https://www.smashingmagazine.com/2017/06/building-production-ready-css-grid-layout/
https://www.smashingmagazine.com/2017/12/grid-inspector/
并获得一些灵感:
_1379665_在CSS网格中的
justify-content
,justify-items
和justify-self
之间:justify-content
属性控制网格列的对齐方式 . 它设置在网格容器上 . 它不适用于或控制网格项的对齐 .justify-items
属性控制网格项的对齐方式 . 它设置在网格容器上 .justify-self
属性会覆盖单个项目的justify-items
. 默认情况下,它在网格项上设置并继承justify-items
的值 .Example
这是一个2x3网格 .
2列,每列100px
3行,每行高50px
容器是:
500px宽
250px高
对齐内容
justify-content
属性对齐容器中的列 .使用
justify-content: space-between
时,两列都固定在边缘上 . 网格项只会因为它们存在于这些列中而移动 . 否则他们不会受到影响 .请注意,此属性仅在容器中有可用空间时有效 . 如果任何列的大小为
fr
,那么将消耗所有可用空间,justify-content
将无效 .justify-items
justify-items
属性对齐其轨道中的网格项(而不是整个容器)使用
justify-items: center
,网格项目在其列中居中 .自我辩护
justify-self
属性会覆盖单个项目的justify-items
.align-content,align-items和align-self
这些属性与它们的
justify-*
对应物的作用相同,但是在垂直方向上 .更多这里:What is the difference between align-items vs. align-content in Grid Layout?
Spec Reference
CSS Box对齐模块
你写了:
虽然Flex和Grid规范为关键字对齐属性提供了自己的定义,例如
justify-items
和align-content
,W3C正在逐步淘汰各个盒子模型的对齐属性并实现新的Box Alignment Module,它试图定义一组对齐属性,以便在所有盒子模型中使用 .来自flexbox规范:
Grid规范中有类似的引用 .
好吧,我想我是想通过Michael_B来解决的 . 我的困惑来自这样一个事实:有时不同的属性会随机改变网格的布局 .
justify-content 允许您将网格定位在其网格容器中 . 这就是为什么如果网格容器与网格的大小相同,则justify-content属性将不起作用 . (如果使用fr单位,情况总是如此) . 这也是它可以具有以下值的原因:空间,空间和空间均匀(除了开始,结束,居中和拉伸),这将分解网格并将网格项放置在网格容器中 . 这是 grid container 的属性 .
justify-items 允许您为放置在网格's grid items (A grid item being a box in the grid, as defined in Michael_B'帖子中的内容设置默认位置 . 这是 grid container 的属性 .
justify-self 允许您覆盖单个单元格中内容的默认位置 . 这将覆盖由justify-items设置的位置 . 因此,如果对容器的所有子项使用justify-self,则在网格容器上设置justify-items将不起作用 . 这是 content inside a grid item 的属性 .
注意:如果将网格项本身设为网格,(换句话说,网格项内的内容是网格),则可以使用justify-self属性或justify-content将其放置在外部网格项中 . 内部网格的网格容器上的属性,因为内部网格的网格容器是外部网格的网格项的内容之一 .
正如您所料,所有这些也适用于align- *属性 .
如果我有什么不对劲,请纠正我
Justify-self 用于对齐内容在其单元格中的位置 horizontally .
align-self 用于对齐内容在其单元格中的位置 vertically .
以下是使用
justify-self: start;
对齐项目的结果THE RESULT FOR THE CODE justify-self: start;