css - 避免与 CSS 网格重叠的项目(在 IE11 中)
问题描述
我有最简单的 CSS Grid
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: 50% 50%;
grid-template-columns: 1fr 1fr;
}
.cell {
border: 1px solid black;
}
这是一个工作示例。
在主要浏览器上,它按预期工作,但在 Internet Explorer 11 中,网格元素是重叠的。
有没有办法(不把它们变成 flex)来解决 IE11 上的这个问题?
解决方案
问题基本上归结为 IE 不像其他浏览器那样自动放置。除非你告诉它你想要网格中每个元素的位置,否则它会假设你想要第 1 列第 1 行中的所有内容。如果这是一个动态网站,你最好使用 flexbox。如果它像您的示例并且您知道每个元素的去向,那么您必须这样说:
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: 50% 50%;
grid-template-columns: 1fr 1fr;
}
.cell {
border: 1px solid black;
}
.cell:first-of-type{
-ms-grid-column: 1;
-ms-grid-row: 1;
-ms-grid-column-span: 1;
}
.cell:last-of-type{
-ms-grid-column: 2;
-ms-grid-row: 1;
-ms-grid-column-span: 1;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div class="grid">
<div class="cell">a</div>
<div class="cell"> b</div>
</div>
</body>
</html>
说了这么多,如果你真的需要 IE 支持,你可能应该坚持使用 flexbox。他们只是相处不来。
更新:我最近偶然发现了一篇文章,概述了 Autoprefixer 如果设置正确,如果您正在做网格模板区域之类的事情,它将如何为您完成繁重的工作。仍然没有自动放置,但如果您正在制作模板并放置元素,它确实可以节省一些时间。 阅读本文
推荐阅读
- oracle - UNION 中的 Oracle ORDER BY
- google-app-engine - Google Cloud 身份验证:创建服务帐户密钥
- android - 如何在 Kotlin 中将图像文件名与字符串进行比较?
- android - 如何对 Android Studio 上的活动是否已更改进行单元测试
- php - 在 MySQL 数据库的 CURL 脚本中循环 FCM 令牌
- node.js - 使用 mongoose 将从 JSON 接收到的多条记录插入到集合中
- java - Android Studio 文件未找到执行
- jqgrid - jqgrid js 与 bootstrap4,occticons。子网格图标位置
- java - 创建一个可以容纳两个对象的 Bigram 类,如字符串或其他 Bigram (Java)
- python - 是否可以通过列表中的单词搜索 txt 文件并返回上面的行?