Я пытаюсь использовать CSS-сетку для вертикального и горизонтального центрирования некоторого текста в области заголовка / заголовка и сделать эту область (и весь макет) несколько гибкой / отзывчивой.
У меня естьнастройте простой пример в этом коде ручки , но если вы не хотите идти туда, HTML и CSS в этом примере:
<div class='layout'>
<div class='titleArea'>
<svg viewBox='0 0 100 100' preserveAspectRatio='xMidYMid meet'>
<text x='50%' y='60%' textAnchor='middle' dy='0.07em' class='titleText'>
Hello World
</text>
</svg>
</div>
<div class='mainArea'>
</div>
</div>
и это:
.layout {
height: 400px;
border: 1px solid red;
display: -ms-grid;
display: grid;
-ms-grid-columns: 1fr;
-ms-grid-rows: minmax(80px, 1fr) minmax(200px, 3fr);
grid-template-columns: 1fr;
grid-template-rows: minmax(80px, 1fr) minmax(200px, 3fr);
}
.titleArea {
border: 1px solid blue;
width: 100%;
-ms-grid-row: 1;
display: -ms-grid;
display: grid;
-ms-grid-columns: 1fr;
-ms-grid-rows: 1fr;
grid-template-columns: 1fr;
grid-template-rows: 1fr;
svg {
height: 100%;
width: 100%;
/* uncomment line below to see text centering work in Edge */
/* max-height: 80px; */
justify-self: center;
align-self: center;
-ms-grid-column: 1;
-ms-grid-row: 1;
}
}
.titleText {
font-size: 2.5em;
}
.mainArea {
border: 1px solid green;
}
Центрирование и сгибание не вполне работают в ручке, но это довольно близко, и, конечно, если смотреть в Edge, проблема становится очевидной.
Если я открою некоторые инструменты разработки и пойду и посмотрю, что происходит, height: 100%
вычисляется не как высота родительского контейнера, а совпадает с тем, что рассчитано для width: 100%
, что делает текст визуализированным огромным и полностьювырывается из родительского контейнера. Если я установлю значение max-height
в пределах того диапазона, который, как я ожидаю, будет изгибаться, то все обернется и текст окажется там, где и должен, но затем он замерзнет в этом размере и не будет слегка уменьшаться / растипри изменении области просмотра.
Есть ли какое-то решение для этого или это допустимая ошибка в Edge?
Вышеуказанная настройка прекрасно работает в Chrome, Firefox и даже в IE 11,проблема только с Edge.