Обратите внимание, что эта проблема не является проблемой CSS Grid.Это больше относится к input
элементам.
Вот ваш код с использованием input
элементов:
div {
display: grid;
width: 200px;
background-color: #ccc;
padding: 8px;
}
div[one] {
grid: "first second" / 1fr 1fr;
}
div[two] {
grid: "first first second second" / 1fr 1fr 1fr 1fr;
}
#first {
grid-area: first;
}
#second {
grid-area: second;
}
<div one>
<input id="first" />
<input id="second" />
</div>
<hr>
<div two>
<input id="first" />
<input id="second" />
</div>
Существует разница в двух макетах.
Теперь ваш код использует элементы section
вместо входов:
article {
display: grid;
width: 200px;
background-color: #ccc;
}
article[one] {
grid: "first second" / 1fr 1fr;
}
article[two] {
grid: "first first second second" / 1fr 1fr 1fr 1fr;
}
#first {
grid-area: first;
height: 25px;
background-color: green;
}
#second {
grid-area: second;
height: 25px;
background-color: red;
}
<article one>
<section id="first"></section>
<section id="second"></section>
</article>
<hr>
<article two>
<section id="first"></section>
<section id="second"></section>
</article>
Нет никакой разницы.
По сути, это сводится к внутренней ширине input
элементов, которая является стандартной функцией в большинстве браузеров.,Эта проблема обсуждается более подробно здесь:
Простой способ отключить эту функциюможно:
- переопределить значение по умолчанию
min-width: auto
для элементов сетки, добавив min-width: 0
( объяснение ) или - , переключившись с
1fr
(который представляет minmax(auto, 1fr)
) до minmax(0px, 1fr)
.