CSS 网格布局 IE11 不考虑大小

CSS Grid layout IE11 doesn't respect sizes

我在 IE11 上用谷歌搜索了 display:grid 和 grid-template-columns 的等价物,但我无法让它像 chrome 那样工作,我做错了什么?我也将我的代码粘贴到代码片段上,但黄色条没有显示在这里

.ctn_mapa_hoteles {
  display: grid;
  display: -ms-grid;
  grid-template-columns: 300px 790px auto;
  -ms-grid-columns: 300px 790px auto;
}

.col_ctn_filtros {
  height: 85vh;
  padding: 30px;
  overflow-y: auto;
  background-color: cyan;
}

.col_ctn_hoteles {
  padding-left: 0px;
  padding-right: 0px;
  background-color: #f5f5f5;
}

.col_ctn_mapa {
  background-color: yellow;
}
<div class="ctn_mapa_hoteles">
  <div class="col_ctn_filtros">
  </div>
  <div class="col_ctn_hoteles">
  </div>
  <div class="col_ctn_mapa">
  </div>
</div>

我遇到了同样的问题。 IE 对开发人员不友好。 Grids 和 Flexbox 都有优点,我也很喜欢用 Grids。据我所知,IE 不支持网格。因此,需要添加一个 Flexbox fallback。你通过媒体做到这一点。

 // for IE 
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {

// flexbox code will go here

.yourdivclassname {
  display: inline-flex;

}

}

对于支持网格的所有其他浏览器(Firefox、Chrome、Edge 等)

@supports (display: grid) {

.yourdivclassname {
   display: grid;

}
}

这就是我能够在不同浏览器中保持网页设计一致的方法。我从网格设计开始。按照我想要的方式获得它后,我将其复制到 Flexbox 设计中,并将对 Grids 的引用替换为 Flexbox 引用。

很好的 Flexbox 教程 Flexbox Tutorial

很棒的网格教程 Grids Tutorial

IE 11 还要求告诉每个 children 在网格内的位置:

.ctn_mapa_hoteles {
  grid-template-columns: 300px 790px auto;
  display: grid;
}

.col_ctn_filtros {
  height: 85vh;
  padding: 30px;
  overflow-y: auto;
  background-color: cyan;
}

.col_ctn_hoteles {
  padding-left: 0px;
  padding-right: 0px;
  background-color: #f5f5f5;
}

.col_ctn_mapa {
  background-color: yellow;
}
/* IE11 fix grid layout */
.ctn_mapa_hoteles {
  display: -ms-grid;
  -ms-grid-columns: 300px 790px 1fr;/* note 1fr instead auto */
}

.col_ctn_filtros {
  -ms-grid-column:1;
}

.col_ctn_hoteles {
  -ms-grid-column:2;
}

.col_ctn_mapa {
  -ms-grid-column:3;
}
<div class="ctn_mapa_hoteles">
  <div class="col_ctn_filtros">12
  </div>
  <div class="col_ctn_hoteles">45
  </div>
  <div class="col_ctn_mapa">78
  </div>
</div>

在 IE11 中可以 运行 的 jsbin : https://jsbin.com/qiwehinuwi/1/edit?html,css,output

auto-flow 规格不可用,对于使用 auto-flow 填充网格的其他类型的布局,您需要为 IE 设置替代布局,这是 IE11 的另一个问题示例:Responsive Layout when using grid