2012-08-03 62 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

相關問題