IE / EDGE中的CSS网格自动放置

Has*_*ect 5 css css3 css-grid

使用IE 11和EDGE支持的旧CSS网格规范时。网格项目是否可以像当前规范一样自动放置?

即不必在网格项目上定义列:

.item:nth-child(1) {
    -ms-grid-column: 1;
}
.item:nth-child(2) {
    -ms-grid-column: 2;
}
.item:nth-child(n) {
    -ms-grid-column: n;
}
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/JoeHastings/pen/mMPoqB

Vad*_*kov 5

答案是否定的(不幸的是)。

关于自动放置的旧规范部分有这样的序言

本节描述有关自动放置网格项目的早期思考。这种功能可能有多种算法。这里提出一个。

在IE / Edge中运行此代码,您将1在控制台中看到很多行,因为IE / Edge 会将所有网格项堆叠在第一个单元格中,并且您不能强制IE / Edge自动放置网格项。设置-ms-grid-column-ms-grid-rowauto不会改变任何东西,因为不支持此值(你可以在MSDN链接查看)。演示:

var gridItems = document.querySelectorAll(".grid__item");
for (var i = 0; i < gridItems.length; i++) {
  var gridItem = gridItems[i];
  console.log(window.getComputedStyle(gridItem)["-ms-grid-row"]);
  console.log(window.getComputedStyle(gridItem)["-ms-grid-column"]);
}
Run Code Online (Sandbox Code Playgroud)
.grid {
  display: -ms-grid;
  -ms-grid-columns: 100px 100px 100px;
  -ms-grid-rows: 100px 100px 100px;
}

.grid__item {
  -ms-grid-row: auto;
  -ms-grid-column: auto;
  background-color: tomato;
  color: white;
  font-size: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div class="grid__item">One</div>
  <div class="grid__item">Two</div>
  <div class="grid__item">Three</div>
  <div class="grid__item">Four</div>
  <div class="grid__item">Five</div>
  <div class="grid__item">Six</div>
  <div class="grid__item">Seven</div>
  <div class="grid__item">Eight</div>
  <div class="grid__item">Nine</div>
</div>
Run Code Online (Sandbox Code Playgroud)