Я столкнулся с этим, решая другая проблема.
У меня есть следующий базовый макет:
+-----+-----------------+
| | |
| c |c +------+ |
| o |o | item | |
| l |l | | |
| | +------+ |
| 1 |2 |
+-----------------------+
col 1
и col 2
создаются с помощью CSS Grid. Теперь я пытаюсь центрировать item
(как по горизонтали, так и по вертикали) внутри col 2
.
#content {
display: grid;
grid-template-columns: minmax(13rem, 15%) minmax(85%, 100%);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
}
#circle {
background: #7FFF00;
width: 9%;
padding-top: 9%;
border-radius: 50%;
margin: auto;
}
.menu {
background: #D2691E;
grid-row-start: 1;
grid-row-end: 1;
}
.circle-area {
background: #191970;
grid-row-start: 1;
grid-row-end: 1;
grid-column-start: auto;
grid-column-end: span 2;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
<body>
<div id='content'>
<div class='menu'></div>
<div class='circle-area'>
<div id='circle'></div>
</div>
</div>
</body>
Приведенный выше код для JSFiddle
Мой код работает так, как я ожидал (item
сохраняет соотношение сторон и центрируется по вертикали и горизонтали) при тестировании в Chrome 62.0 и Safari 11.0. Хотя, когда я добрался до Firefox (56.0) - соотношение сторон меняется при изменении размера окна. Я попробовал другой метод центрирования, используя сетка (JSFiddle) (результат тот же, что Firefox не сохранит соотношение сторон).
Теперь комментируем (JSFiddle) гибкую часть из css, заставит Firefox сохранить соотношение сторон, хотя элемент больше не центрируется по вертикали.
Мои вопросы:
- Это известная проблема (ошибка) в Firefox или что-то не так с моим кодом?
- Каково правильное исправление/обходной путь для центрирования
item
по вертикали и горизонтали внутриcol 2
с сохранением соотношения сторон (предпочтительно с использованием flex)?