2012-08-03 96 views
2

事情是,一些CSS属性有不同的名称是JavaScript,例如textOverflow在js中是text-overflow在CSS中。如何从CSSStyleDeclaration对象获得真正的CSS属性名称?

是否有一个转换表某处JS引擎,我可以访问或我必须做我自己翻译数组或对象,如:

transObj = { textOverflow : 'text-overflow' }; 

比如我通过循环该对象和所有我得到的是只有JS名称:

for (var n in csd) { 
    if (!csd.hasOwnProperty(n)) continue; 
    csd[n].getTrueCSSName() // is there something like this ? 
} 

或者,也许简单的regex替代将是不错,但我不知道是否规则,在爵士的名字都用大写字母在CSS的名字tranlsate到-[a-z]

回答

2

它含有-所有的CSS样式由ECMAScript中的驼峰代表取代,因为我们不能在所有场合使用-。您可以通过调用这样的正则表达式翻译名称,:

var name = "font-width"; 

// convert names like "font-width" into css camelCase form like "fontWidth" 
name = name.replace(/-(\w)/g, function _replace($1, $2) { 
    return $2.toUpperCase(); 
}); 

这也适用于像-webkit-box-shadow或诸如此类的东西。

+0

有没有例外?这个正则表达式是否安全?从js到css的其他方法也是如此吗? – rsk82 2012-08-03 16:14:03

+0

@ rsk82:我至少没有发现任何异常。 – jAndy 2012-08-03 16:14:54

+1

'float'转换为'cssFloat' :( – rsk82 2012-08-08 15:06:24

相关问题