Почему не применяется display grid к button элементу?

Тут не центрируется

button {
  display: grid;
  align-items: center;
  justify-items: center;
  height: 11vw;
  width: 11vw;
  background-color: tomato;
  border: none;
  padding: 0;
}

button::after,
button::before {
  content: "";
  grid-row: 1 / 2;
  grid-column: 1 / 2;
  height: 2vw;
  width: 2vw;
  background-color: black;
}
<button></button>

А тут центрируется

div {
  display: grid;
  align-items: center;
  justify-items: center;
  height: 11vw;
  width: 11vw;
  background-color: tomato;
  border: none;
}

div::after,
div::before {
  content: "";
  grid-row: 1 / 2;
  grid-column: 1 / 2;
  height: 2vw;
  width: 2vw;
  background-color: black;
}
<div></div>

С абсолютным позиционированием

body {
  display: flex;
}

button {
  position: relative;
  display: grid;
  align-items: center;
  justify-items: center;
  height: 11vw;
  width: 11vw;
  background-color: tomato;
  border: none;
  padding: 0;
}

button::after,
button::before {
  content: "";
  position: absolute;
  height: 2vw;
  width: 2vw;
  background-color: black;
}

div {
  position: relative;
  display: grid;
  align-items: center;
  justify-items: center;
  height: 11vw;
  width: 11vw;
  background-color: lightblue;
  border: none;
}

div::after,
div::before {
  content: "";
  position: absolute;
  height: 2vw;
  width: 2vw;
  background-color: black;
}
<button></button>
<div></div>

С флексами и там и там нормально работает

body {
  display: flex;
}

button {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 11vw;
  width: 11vw;
  background-color: tomato;
  border: none;
  padding: 0;
}

button::after,
button::before {
  content: "";
  position: absolute;
  height: 2vw;
  width: 2vw;
  background-color: black;
}

div {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 11vw;
  width: 11vw;
  background-color: lightblue;
  border: none;
}

div::after,
div::before {
  content: "";
  position: absolute;
  height: 2vw;
  width: 2vw;
  background-color: black;
}
<button></button>
<div></div>

В чём дело?


Ответы (1 шт):

Автор решения: hu-fo

Если я правильно понял, то это баг в хроме.

В Chrome (и Safari 10) fieldset элементы с display: grid не ведут себя как grid-контейнеры. При применении display: grid к button элементу - этот button элемент ведёт себя как grid-контейнер только в Firefox.

→ Ссылка