css - Modernizr:IE10 和 Flexbox:如何检测 IE10 Flexbox

标签 css flexbox modernizr

我正在使用 Modernizr v3在我的网站上测试 flexbox 支持。

Modernizr 为支持它的浏览器添加了一个"flexbox" 主体类,为不支持它的浏览器添加了一个"no-flexbox"。由于不支持 flexbox 的浏览器只是我的一小部分观众,我使用了 "no-flexbox" 类来提供后备 CSS。例如:

.ad { /* Default CSS */
display: flex;
}

.no-flexbox .ad { /* Fallback CSS*/
display:table;
}

一切正常,除了 IE10,因为 Modernizr 向它添加了一个“no-flexbox”类,即使 IE10 确实支持 Flexbox,它只是使用旧语法。因此,在 IE10 上,我的布局被破坏了,因为它读取了 flex box 和 non-flexbox 样式。

In this thread ,它说 modernizer 对 IE10 有 flexboxtweener 风格。因此,我想我可以重写我的回退以使用 .no-flexboxtweaner 而不是 .no-flexbox

问题是支持新的 flexbox 语法的浏览器也被赋予了一个 no-flexboxtweaner 类,所以他们读取回退代码。

我如何设置它,以便只有不支持任何形式的 flexbox 的浏览器(无论它是新的还是旧的)获得“否”类。

我知道我可以做“.no-flexbox .ad, .no-flexboxtweaner .ad”,但是那样会使 CSS 膨胀(加上运行两个 Modernizr 测试)。我宁愿只有一个测试/类(class)。

最佳答案

I know I could do ".no-flexbox .ad, .no-flexboxtweaner .ad", but then that's bloating the CSS (plus running two Modernizr tests). I'd rather just have a single test/class.

这有点傻,伙计。它只有几个字节——几乎所有字节都将通过 gzip 文件被删除。如果你真的想避免它,你可以创建一个额外的 Modernizr 检查,为你提供任何 flexbox

Modernizr.addTest('anyflexbox', (Modernizr.flexbox || Modernizr.flexboxtweener))

这将创建一个名为 anyflexbox 的新属性,您可以相应地设置您的 css 样式。

关于css - Modernizr:IE10 和 Flexbox:如何检测 IE10 Flexbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773387/

相关文章:

javascript - 使div适合剩余高度

css - Modernizr 和后代选择器?

html - 在流畅的图像上居中文本

javascript - 粘性导航问题 - "position: fixed"可能未生效

html - 我在我的页面上制作了一个视频响应,但现在我无法将它居中

html - 溢出导致整个页面滚动

javascript - 是什么导致我的脚本在使用 Modernizr.load (yepnope.js) 时被请求两次

jquery - 我如何在 jquery 中切换点击功能

css - 在CSS中按度数计算位置?

仅用于 Angular 部边框的 CSS