【问题标题】:How to detect if CSS code is activated or not [duplicate]如何检测CSS代码是否被激活[重复]
【发布时间】:2018-10-10 00:09:00
【问题描述】:

这是一个奇怪的问题,但我在我的网站上使用 flex 并且问题是:是否可以通过 JavaScript 或 jQuery 或类似的东西检测 flex 是否工作?因为 IE 10 及更低版本不支持 flex,如果它检测到它正在旧 Web 浏览器上查看或无法正常工作,则会出现如下消息:您的 Web 浏览器太旧,请下载一个新浏览器。这甚至可能吗?谢谢你的回答。

【问题讨论】:

  • 这种情况下只检测浏览器,你会覆盖更多的属性(常见的IE检测)
  • 我不关心旧浏览器,但也许检查this answer
  • 是的,使用@supports
  • 支持在IE中不支持呵呵。
  • 你可以做一些叫做特征检测的东西,一个流行的 javascript 是 Modernizer,modernizr.com

标签: javascript jquery html css flexbox


【解决方案1】:

据我所知,css flexorder 属性是动画,因此您可以在可见性隐藏的元素上触发一个类以打开 flex 属性。然后为transitionend事件附加一个eventListener,并通过检查event.propertyName来检查属性是否来自flex,如果这个事件被触发,则表示它被支持。这里有一个 fiddle 来说明,一个名为 active 的类打开了一个带有#mock id 的 div 并监听了转换:

https://jsfiddle.net/ibowankenobi/yLv39dsm/1/

document.getElementById("mock")
.addEventListener("transitionend",function(e){if(e.propertyName.match(/flex/gi)){alert("flex is supported")}});
setTimeout(function(){document.getElementById("mock").classList.add("active");},1000);

除此之外,这个问题可以提供帮助:

Detecting flex-wrap support in browsers

似乎还有一种方法似乎可行:

https://gist.github.com/davidhund/b995353fdf9ce387b8a2

当然,Modernizr 可能已经有了这个。

【讨论】:

  • 在控制台返回这个问题:Uncaught TypeError: Cannot read property 'addEventListener' of null at scripts.js:2
  • 我链接的小提琴中是不是这么说的?似乎“模拟” id div 不存在或脚本在头部,因此尚未解析 html。
  • 不,它没有说出来。
  • 我无法在小提琴中重现它,你是否也遇到同样的错误?
  • 不,它在那个小提琴中工作得很好。
猜你喜欢
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
相关资源
最近更新 更多