Centering absolutely positioned element in CSS Grid

本秂侑毒 提交于 2019-12-11 06:08:52

问题


On Mozilla this pen works. But when I switch to Chrome it breaks.

It's just me or something is wrong with browsers?

.container {
  height: 500px;
  width: 500px;
  background-color: beige;
  display: grid;
  grid-template-rows: 1fr;
  grid-template-columns: 1fr;
}

.container h2 {
  position: absolute;
  justify-self: center;
  align-self: center;
  grid-row: 1;
  grid-column: 1;
}
<div class="container">
  <h2>TEXT</h2>
</div>

codepen LINK


回答1:


It appears that Chrome has deviated from spec guidance on this issue.

The justify-self and align-self properties should work on an absolutely-positioned child element of a grid container.

9.2. With a Grid Container as Parent

An absolutely-positioned child of a grid container is out-of-flow and not a grid item, and so does not affect the placement of other items or the sizing of the grid.

The static position of an absolutely-positioned child of a grid container is determined as if it were the sole grid item in a grid area whose edges coincide with the padding edges of the grid container.

Note that this position is affected by the values of justify-self and align-self on the child.

So, Firefox seems to have this right.

For other centering options see this post:

  • Centering in CSS Grid



回答2:


position: absolute is throwing off Chrome (tested on v62). It seems Firefox interprets the justify-self and align-self attributes as overrides, while Chrome doesn't, hence the different behavior.

Just remove position: absolute and it works.

https://codepen.io/anon/pen/vJRmNR



来源:https://stackoverflow.com/questions/45784341/centering-absolutely-positioned-element-in-css-grid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!