我正在为一个简单的三面板幻灯片制作东西的原型。在第二个面板上,我想使用css-grid通过一种简单的方法将面板分为4个相等且敏感的区域,即容器高度的100%。
这是演示:
http://jsfiddle.net/stratboy/obnkc2x5/1/
一些代码:
<div class="sub-grid-container">
<div class="sub-grid-item">sub 1</div>
<div class="sub-grid-item">sub 2</div>
<div class="sub-grid-item">sub 3</div>
<div class="sub-grid-item">sub 4</div>
</div>
和相关的CSS:
.sub-grid-container{
display:grid;
height: 100%;
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
background-color: red;
}
注意:我也在使用Autoprefixer,它正在编译如下内容:
.sub-grid-container {
display: -ms-grid;
display: grid;
height: 100%;
-ms-grid-columns: 50% 50%;
grid-template-columns: 50% 50%;
-ms-grid-rows: 50% 50%;
grid-template-rows: 50% 50%;
background-color: red; }
除IE11之外,所有代码都可在任何地方使用。在IE11中,我有4个网格单元重叠,并且容器的高度不是100%,宽度也不是100%。
我对CSS网格还很陌生,但是我认为我正在做一些非常基本的事情。我做错了什么?或者,也许用IE11不可能做到吗?
最佳答案
好的,我设法解决了这个问题,并且在自动前缀修复程序的帮助下也可以正常工作。基本上,在IE11上,您必须使用grid-row
和grid-column
道具告诉单元格的开始和结束位置。另外,要使整个事情与Autoprefixer一起使用,您必须添加grid-template prop,并且不要使用单个grid-template-columns / rows语句(这是最后一件事,因为否则autoprefixer不会编写单元格的-ms-grid-行/列道具):
.sub-grid-container {
display: grid;
height: 100%;
// grid-template-columns: 50% 50%; // do not
// grid-template-rows: 50% 50%; // do not
grid-template:
"a b" 1fr
"c d" 1fr /
1fr 1fr; // you can use fr units instead %
}
.cell-1 {
grid-area: a;
}
.cell-2 {
grid-area: b;
}
.cell-3 {
grid-area: c;
}
.cell-4 {
grid-area: d;
}
自动前缀的结果将是这样的:
.sub-grid-container {
display: -ms-grid;
display: grid;
height: 100%;
-ms-grid-rows: 1fr 1fr;
-ms-grid-columns: 1fr 1fr;
grid-template: "a b" 1fr "c d" 1fr / 1fr 1fr;
}
.cell-1 {
-ms-grid-row: 1;
-ms-grid-column: 1;
grid-area: a;
}
.cell-2 {
-ms-grid-row: 1;
-ms-grid-column: 2;
grid-area: b;
}
.cell-3 {
-ms-grid-row: 2;
-ms-grid-column: 1;
grid-area: c;
}
.cell-4 {
-ms-grid-row: 2;
-ms-grid-column: 2;
grid-area: d;
}
关于html - 如何在IE11中使这种简单的CSS网格布局有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53574303/