Элементы сетки в первом ряду создают четыре столбца:
#w1 {
width: 200px;
grid-column: 1 / 3;
grid-row: 1 / 2;
}
#w2 {
width: 150px;
grid-column: 3 / 5;
grid-row: 1 / 2;
}
Первый элемент занимает два столбца (grid-column: 1 / 3
).
Второй элемент занимает два столбца (grid-column: 3 / 5
).
Итак, у вас есть сетка из 4 столбцов.
Chrome
В Chrome длины элементов сетки в первой строке делятся поровну между столбцами.
Итак, первые два столбца имеют ширину 100 пикселей:
![enter image description here](https://i.stack.imgur.com/MQlNO.png)
А вторые две колонки имеют ширину 75px:
![enter image description here](https://i.stack.imgur.com/emdxC.png)
Теперь вы можете видеть, что происходит во втором ряду. Вот код:
#w3 {
width: 100px;
grid-column: 1 / 2;
grid-row: 2 / 3;
}
#w4 {
width: 150px;
grid-column: 2 / 4;
grid-row: 2 / 3;
}
#w5 {
width: 100px;
grid-column: 4 / 5;
grid-row: 2 / 3;
}
Первый элемент (#w3
) имеет ширину 100 пикселей. Это идеально вписывается в первый столбец, созданный #w1
.
Второй элемент (#w4
) имеет ширину 150 пикселей. 100px идеально вписывается во второй столбец, созданный #w1
. Еще 50 пикселей расширяются в третий столбец, который был создан #w2
и имеют ширину 75 пикселей. Это оставляет пробел в 25px, представляющий оставшийся пробел в третьем столбце.
Третий элемент (#w5
) имеет ширину 100 пикселей. Но поскольку он начинается с четвертого столбца шириной 75 пикселей, оставшиеся 25 пикселей переполняют контейнер.
Итог: В Chrome ширина столбцов фиксируется после рендеринга первой строки. Элементы сетки в последующих строках соответствуют ширине столбцов, установленной в первой строке.
Firefox
В отличие от Chrome, в Firefox кажется, что ширина столбцов не остается фиксированной после рендеринга первой строки. Ширина столбцов является гибкой на протяжении всего процесса рендеринга.
![enter image description here](https://i.stack.imgur.com/0yJ3N.png)
Край
То же, что и Chrome.