Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试transitionProperty(et.al.)是采用供应商前缀样式的属性名称,还是采用规范化的属性名称?_Javascript_Css_Html_Vendor Prefix - Fatal编程技术网

Javascript 如何测试transitionProperty(et.al.)是采用供应商前缀样式的属性名称,还是采用规范化的属性名称?

Javascript 如何测试transitionProperty(et.al.)是采用供应商前缀样式的属性名称,还是采用规范化的属性名称?,javascript,css,html,vendor-prefix,Javascript,Css,Html,Vendor Prefix,下面是设置CSS的JS代码摘录: function hyphen_style(style) { return style.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); } var css = "#debug_element_highlighter_container * {"+ hyphen_style(Modernizr.prefixed

下面是设置CSS的JS代码摘录:

function hyphen_style(style) {
    return style.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
}


var css = "#debug_element_highlighter_container * {"+
hyphen_style(Modernizr.prefixed('transitionDuration')) + ": 2s, 2s;" + 
hyphen_style(Modernizr.prefixed('transitionProperty')) + ": transform, opacity;" + 

... 

// append a style tag to head 
var head = document.getElementsByTagName("head")[0];
var style = document.createElement("style");
style.type = "text/css";
if (style.styleSheet){
    style.styleSheet.cssText = css;
} else {
    style.appendChild(document.createTextNode(css));
}
现在这确实起作用了,但我记得不久前,我有浏览器拒绝合作,而不使用供应商前缀版本的
transform
样式属性设置
transitionProperty
,即CSS需要读取
-webkit transition property:-webkit transform,opacity以使浏览器按我希望的方式运行

显然,这在今天仍然适用于同样支持
-webkit转换属性的浏览器:transform,opacity,但我们可以看到,对于是否在这些样式上设置样式名称或样式属性的供应商前缀,存在四种不同的组合可能性。不难想象的是,在未来的某个时刻,某些webkit浏览器会突然停止检查
-webkit-
前缀

Modernizr(和Modernizr文档)为我们提供了在它们之间进行转换的原语(
prefixed()
等等),但我不清楚如何进行可靠的测试,以确定在
transitionProperty
之后的样式是否需要设置前缀样式属性名称。测试样式本身以确定它们是否需要加前缀是非常简单的,只需指定一个不加前缀的样式并查看它是否“需要”。但我不太确定这种方法是否适用于指定样式属性名称的特殊情况


当然,我可以使用超便携的overkill方法,即在出现这种情况时设置所有四种CSS声明组合,如果浏览器支持任何一种样式,浏览器都不会有任何不满意的地方。

我对您的应用程序了解不够,不知道这是否适用于您,但是像这样的网站提供了一个API,您可以运行CSS,如果需要的话,它会向您的CSS添加任何供应商前缀。

谢谢,我认为prefixr对我来说是一个有用的工具。