【发布时间】:2025-12-19 10:25:06
【问题描述】:
我正在尝试使用 CSS 网格将标题/标题区域中的一些文本垂直和水平居中,并使该区域(和整个布局)具有一定的灵活性/响应性。
我在code pen 中设置了一个简单的示例,但如果您不想去那里,示例中的 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 中存在问题。
【问题讨论】:
标签: css microsoft-edge css-grid