What is the difference between align-items vs. align-content in Grid Layout?

后端 未结 1 1316
太阳男子
太阳男子 2020-12-01 20:21

I\'ve read through A complete guide to Grid, but still confused with the differences between two sets of container properties, namely the \"justify/align-items\

相关标签:
1条回答
  • 2020-12-01 20:47

    Let's start with clarifying the terminology:

    Grid Container

    The grid container is the overall container for the grid and grid items. It establishes the grid formatting context (as opposed to another formatting context, such as flex or block).

    Grid

    The grid is a group of intersecting vertical and horizontal lines that divides the grid container’s space into grid areas, which are boxes that contain grid items.

    Grid Items

    Grid items are boxes in a grid container that represent in-flow content (i.e., content that is not absolutely positioned).

    Here's an illustration from the W3C:

    The justify-content and align-content properties align the grid.

    The justify-self, justify-items, align-self and align-items properties align the grid items.


    With regard to the problem described in your question:

    My confusion revolves around the claim made by the author that the "-content" set are there because: "Sometimes the total size of your grid might be less than the size of its grid container"

    Well, you can see in the illustration that the grid is smaller than the grid container.

    As a result, there is space remaining and the container is able to distribute this space to vertically center (align-content: center) and right-align (justify-content: end) the grid.

    The extra space could also allow the grid to be spaced apart with values such as space-around, space-between and space-evenly.

    However, if the grid size equaled the container size, then there would be no free space, and align-content / justify-content would have no effect.


    Here's more from the spec:

    10.3. Row-axis Alignment: the justify-self and justify-items properties

    Grid items can be aligned in the inline dimension by using the justify-self property on the grid item or justify-items property on the grid container.

    10.4. Column-axis Alignment: the align-self and align-items properties

    Grid items can also be aligned in the block dimension (perpendicular to the inline dimension) by using the align-self property on the grid item or align-items property on the grid container.

    10.5. Aligning the Grid: the justify-content and align-content properties

    If the grid’s outer edges do not correspond to the grid container’s content edges (for example, if no columns are flex-sized), the grid tracks are aligned within the content box according to the justify-content and align-content properties on the grid container.

    (emphasis added)

    0 讨论(0)
提交回复
热议问题