- 在 2017 年开始各个浏览器就开始支持网格布局(grid)
- 到今天基本上可以正常使用了, 但如果还是要兼容旧浏览器该怎么办呢?
网格布局兼容性
| 端类型 | 浏览器前缀 | grid支持时间 | grid最早版本 | flex支持时间 | flex最早版本 |
---|
Chrome | PC端 | webkit | 2017-03-09 | 57 | 2012-07-31/2013-08-20 | 21/29 |
Edge | PC端 | ms | 2015-07-28/2017-10-17 | 12/16 | 2015-07-28 | 12 |
Firefox | PC端 | moz | 2017-03-07 | 52 | 2013-04-02 | 20 |
Opera | PC端 | webkit | 2017-03-21 | 44 | 2013-07-02/2013-08-27 | 15/16 |
Safari | PC端 | webkit | 2017-03-27 | 10.1 | 2013-10-22/2015-09-30 | 7/9 |
Chrome Android | 移动端 | webkit | 2017-03-16 | 57 | 2013-02-27/2013-08-21 | 25/29 |
Firefox for Android | 移动端 | moz | 2017-03-07 | 52 | 2013-04-02 | 20 |
Opera Android | 移动端 | webkit | 2017-09-27 | 43 | 2013-05-21/2013-09-18 | 14/16 |
Safari on iOS | 移动端 | webkit | 2017-03-27 | 10.3 | 2013-09-18/2015-09-16 | 7/9 |
Samsung Internet | 移动端 | webkit | 2017-08-23 | 6.0 | 2013-09-25/2014-10-17 | 1.5/2.0 |
WebView Android | 移动端 | webkit | 2017-03-16 | 57 | 2013-12-09/2014-09-03 | 4.4/37 |
- 时间和版本中使用了
/
, 表示 需要添加前缀/不需要添加前缀
在浮动布局中使用
- 通过上面的表格可以看出来网格布局在2017年就开始支持了, 到现在也已经发展了很多年了
- 我们可以在生产环境中使用网格布局来实现我们页面上的布局
- 如果老项目中使用了浮动布局, 我们在使用网格布局时, 原来的浮动布局将会失效
- 我们不需要因为使用网格布局而去修改原来的代码(即: 设置
float: node
)
display: grid;
gap: 6px;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 100px;

- 如果我们给子元素上设置
float: right;
, 是没有效果的
- 当然如果你原来是浮动布局, 你想改用网格布局, 那是不需要修改原来的浮动属性的
- 同样的当我们设置为网格布局, 在子元素上设置
display: inline-block
也是没效果的
使用特性查询
- 如果我们需要支持的浏览器确实不支持网格布局时, 我们可以通过
@supports
规则检查 CSS 属性和值的支持
- 还记得媒体查询的使用方法吗? 他们的用法是差不多的, 那下面我们就来试一下
@supports (display: grid) {
.c1 {
background-color: red;
}
}
@supports (display: ruby) {
.c2 {
background-color: green;
}
}

- 我的浏览器是支持
display: grid
的, 所以第一个元素的背景色变为了红色
- 我的浏览器是不支持
display: ruby
的, 所以第二个元素的背景颜色没有变化, ruby layout
小结
- 网格布局到现在也已经发展了很多年了, 可以在生产环境中使用了
- 使用网格布局后有部分属性设置会失效, 如
float
和 display: inline-block
- 如果确实需要判断浏览器是否支持网格布局并做进一步优化, 可以使用
@supports
进行处理
相关文档
参考文档