【发布时间】:2015-07-17 20:16:59
【问题描述】:
我只是在搞乱这个modernizr来找出,他们如何检查用户浏览器是否支持某个CSS属性,基本上我只是想有一个小脚本告诉我用户的浏览器是否支持CSS转换。我将modernizr代码抽象为如下内容:
Elem = document.createElement('Alx');
eStyle = Elem.style;
var cssProp = (function check(){
props = ["transition", "WebkitTransition", "MozTransition", "OTransition", "msTransition"];
for(var i in props) {
var prop = props[i];
console.log(prop);
if (!contains('-' , prop) && eStyle[prop] !== undefined ) {
return prop;
}
}
})();
/* The contains function */
function contains( str, substr ) {
return !!~('' + str).indexOf(substr);
}
modernizr 做了几乎相同的事情,我只是做了一些更改并对数组值进行了硬编码以简化事情。该脚本以下列方式工作。
创建一个 html 元素(不必是有效的 html 元素)。
执行一个 IIFE,它基本上会遍历所有可能的浏览器版本的 css 属性以及标准的 W3C 变体。检查 thing 属性是否可以应用于我们创建的 html 元素,如果不能应用
if条件失败并返回 undefined如果 if 条件通过,则返回正确的 css-3 支持属性并将其存储在 cssProps 中。
我只是想知道,这是检查用户浏览器支持哪些转换的防弹方法吗?或者如果它完全支持?
这真的是我第一次尝试浏览器功能检测,所以我想知道。
【问题讨论】:
-
我不明白你为什么不直接使用modernizr。您可以创建一个非常小的自定义构建,并且您不必担心您是否做对了。事实上,您要求我们验证您从其他地方窃取的代码 - 如果您想知道它是否有效,请自行测试。
-
你可以滚动你自己的现代化工具来检查特定的东西,比如 CSS3 过渡。转到他们的download page 并仅选中 CSS Transition 复选框,然后点击生成
-
@torazaburo 在某种程度上你的权利,但我的目标是学习自己编写代码,而不仅仅是使用库,是的,我要求你验证我的代码,但这不是唯一的事情我在问,最后是每个为 Web 编写代码的 js 程序员,在某些时候都想知道库中的事情是如何工作的。您使用“使用自定义构建”的解决方案是好的、高效的并且绝对可以节省时间....但是“这不是我想要的,而且绝对不适合每个用例”。我希望我已经说明了我的意图和观点。问我你是否有进一步的理解困难。
标签: javascript html css modernizr