【发布时间】:2017-08-20 21:03:30
【问题描述】:
我正在为我的网格使用以下 HTML 标记。
<section class="grid">
<article class="grid-item width-2x height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x">....</article>
<article class="grid-item height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x height-2x">....</article>
</section>
SCSS 代码如下所示:
.grid {
display: grid;
grid-template-columns: repeat( 4, 1fr );
grid-gap: 30px;
align-items: start;
.grid-item {
&.height-2x {
grid-row: span 2;
}
&.width-2x {
grid-column: span 2;
}
}
}
由于我在我的工作流程中使用了自动前缀,它会自动添加带有 -ms 前缀的所有相关属性。我可以通过检查元素来确认。
现在,问题是这段代码在 Chrome、Firefox 和 Opera 中运行良好,但是当我在 Microsoft Edge 或 IE 11 中打开此页面时,所有网格项在第一个单元格中都相互重叠。根据this site,这些浏览器支持带有-ms 前缀的CSS Grid 布局。我已经为这个场景创建了一个 CodePen。
为什么它不起作用?
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: (1fr)[4];
grid-template-columns: repeat(4, 1fr);
-ms-grid-rows: (270px)[4];
grid-template-rows: repeat(4, 270px);
grid-gap: 30px;
}
.grid .grid-item {
background-color: #000;
color: #fff;
text-align: center;
line-height: 270px;
}
.grid .grid-item.height-2x {
-ms-grid-row: span 2;
grid-row: span 2;
}
.grid .grid-item.width-2x {
-ms-grid-column: span 2;
grid-column: span 2;
}
<section class="grid">
<article class="grid-item width-2x height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x">....</article>
<article class="grid-item height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x height-2x">....</article>
</section>
【问题讨论】:
-
根据 CanIUse IE 和 Edge 使用旧版本的 Grid 规范。这可能是问题所在。
-
CanIUse 还指定它在 IE 11 和 Edge >16 上部分支持
-
替代
-ms-*属性是否映射到旧规范中的相同行为?如果不是,那么添加这些属性有什么意义? -
CodePen 链接已损坏 :(
标签: html css internet-explorer-11 css-grid