自己一個風格

2008年6月12日,上午差十~一分11點盧克史密斯|在發展中| 8評論

在用戶交互修改DOM元素的風格,是創造的DHTML界面,從一個狀態過渡到平穩狀態的支柱之一,(希望)直觀的方式。 DOM中的每一個style包含風格,相應的CSS屬性的屬性的集合所理解的瀏覽器。 JavaScript和CSS功能的瀏覽器,將包含以下兩段紅色文字:

 < - 第1 - >
 <p /> #f00">本款是紅色 </ P>

 < - 第2款 - >
 <p id="x">本款的顏色將是紅色的JavaScript運行後 </ P>
 <script type="text/javascript">
 (函數(){
     EL =的document.getElementById('X');

     el.style.color =“#F00”;

 })();
 </ SCRIPT>

即使不適用的一個給定的元素的CSS屬性,將代表該style的樣式集合。 例如,甚至<br>元素將有el.style.letterSpacing財產。

已更改名稱,保護無辜者

JavaScript中的樣式屬性的名稱是駱駝套管版本的CSS, font-family家庭成為在el.style.fontFamily el.style.fontFamily樣式集合中。 “浮”在JavaScript中的保留字,所以CSS的float屬性是一個不同的名稱。 在Internet Explorer中, styleFloat使用,火狐,Safari和Opera都使用cssFloat (Opera還支持styleFloat ,實際上)。 另外,每個瀏覽器都有一個專有的CSS屬性的主機,也表現出的風格集合-moz-border-radius邊界半徑el.style.MozBorderRadius成為el.style.MozBorderRadius在Firefox )。 比其他styleFloat / cssFloat ,瀏覽器廠商在很大程度上同意在非專有的屬性名稱。

瘋狂和方法

我載文件的屬性在每個A級瀏覽器的style集合(關於其具體值的功能支持的任何索賠)。

對於每個瀏覽器,我用一個簡單的迭代式的收集,交叉檢查中如果有一個for (var prop in el.style)道具)方法。 具體來說,我用下面的:

瀏覽器 方法
Internet Explorer 6中 for ( in )和Visual Web Developer 2008 Express版
Internet Explorer 7中 for ( in )和Visual Web Developer 2008 Express版
火狐2.0.0.14 for ( in )和Firebug 1.1
火狐3(候選發布版2) for ( in )和Firebug 1.1
Safari瀏覽器3.1.1(WebKit的建設 4525.18) DOM檢查 *
歌劇院 9.27 for ( in )
歌劇院 9.5(試用版和GA) for ( in )和Opera蜻蜓

* -野生動物園不枚舉未分配的樣式屬性for ( in ) ()不顯示任何有用的東西。

所有測試都是在MacBook Pro運行 OSX 10.4。 非法入境者和FF2的測試 Parallels的運行 Windows XP的實例。 我只記錄沒有前綴與供應商標識符(EG - MOZ),省略了方法和領域,如元setProperty setProperty length長度。 唯一的例外這是cssText ,我將討論更多。 所以事不宜遲 ... ...

在A級(加幾)瀏覽器的樣式屬性

黃金背景的屬性是目前在所有測試的瀏覽器。

物業 IE6的 IE7中 FF2 FF3的 S3 Op9.27 Op9.5
加速器 Ÿ Ÿ ñ ñ ñ ñ ñ
alignmentBaseline ñ ñ ñ ñ Ÿ ñ Ÿ
方位角 ñ ñ Ÿ Ÿ ñ ñ ñ
背景 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
附件 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
顏色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
圖片 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
X Ÿ Ÿ ñ ñ ñ ñ ñ
Ÿ Ÿ Ÿ ñ ñ ñ ñ ñ
重複 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
baselineShift ñ ñ ñ ñ Ÿ ñ Ÿ
行為 Ÿ Ÿ ñ ñ ñ ñ ñ
邊境 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
顏色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
風格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
寬度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
顏色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
風格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
寬度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
關閉 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
間距 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
底部 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
boxSizing ñ ñ ñ ñ ñ ñ Ÿ
captionSide ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
明確 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
剪輯 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
路徑 ñ ñ ñ ñ Ÿ ñ Ÿ
規則 ñ ñ ñ ñ Ÿ ñ Ÿ
顏色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
插值 ñ ñ ñ ñ Ÿ ñ Ÿ
過濾器 ñ ñ ñ ñ Ÿ ñ Ÿ
簡介 ñ ñ ñ ñ ñ ñ Ÿ
渲染 ñ ñ ñ ñ Ÿ ñ Ÿ
的ColumnSpan ñ ñ ñ ñ ñ ñ Ÿ
內容 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
counterIncrement ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
counterReset ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
cssFloat ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
cssText *** Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
暗示 ñ ñ Ÿ Ÿ ñ ñ ñ
ñ ñ Ÿ Ÿ ñ ñ ñ
ñ ñ Ÿ Ÿ ñ ñ ñ
光標 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
方向 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
顯示 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
displayAlign ñ ñ ñ ñ ñ ñ Ÿ
dominantBaseline ñ ñ ñ ñ ñ ñ Ÿ
海拔 ñ ñ Ÿ Ÿ ñ ñ ñ
emptyCells ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
enableBackground ñ ñ ñ ñ ñ ñ Ÿ
填寫 ñ ñ ñ ñ Ÿ ñ Ÿ
不透明度 ñ ñ ñ ñ Ÿ ñ Ÿ
規則 ñ ñ ñ ñ Ÿ ñ Ÿ
過濾器 Ÿ Ÿ ñ ñ Ÿ ñ Ÿ
floodColor ñ ñ ñ ñ Ÿ ñ Ÿ
floodOpacity ñ ñ ñ ñ Ÿ ñ Ÿ
字體 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
家庭 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
尺寸 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
調整 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
伸展 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
風格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
變種 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
重量 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
glyphOrientationHorizo​​ntal ñ ñ ñ ñ ñ ñ Ÿ
glyphOrientationVertical ñ ñ ñ ñ ñ ñ Ÿ
高度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
imageRendering ñ ñ ñ ñ ñ ñ Ÿ
的IMEMode Ÿ Ÿ ñ Ÿ ñ ñ ñ
字距 ñ ñ ñ ñ ñ ñ Ÿ
layoutFlow Ÿ Ÿ ñ ñ ñ ñ ñ
layoutGrid Ÿ Ÿ ñ ñ ñ ñ ñ
字符 Ÿ Ÿ ñ ñ ñ ñ ñ
Ÿ Ÿ ñ ñ ñ ñ ñ
模式 Ÿ Ÿ ñ ñ ñ ñ ñ
類型 Ÿ Ÿ ñ ñ ñ ñ ñ
Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
letterSpacing Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
lightingColor ñ ñ ñ ñ Ÿ ñ Ÿ
換行符 Ÿ Ÿ ñ ñ ñ ñ ñ
lineHeight Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
lineIncrement ñ ñ ñ ñ ñ ñ Ÿ
listStyle Ÿ Ÿ Ÿ Ÿ ñ Ÿ Ÿ
圖片 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
類型 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
保證金 Ÿ Ÿ Ÿ Ÿ ñ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
markerEnd ñ ñ ñ ñ Ÿ ñ Ÿ
markerMid ñ ñ ñ ñ Ÿ ñ Ÿ
markerOffset ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
markerStart ñ ñ ñ ñ Ÿ ñ Ÿ
馬克 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
面膜 ñ ñ ñ ñ Ÿ ñ Ÿ
maxHeight ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
maxWidth ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
minHeight Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
minWidth ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
navDown ñ ñ ñ ñ ñ ñ Ÿ
navIndex ñ ñ ñ ñ ñ ñ Ÿ
navLeft ñ ñ ñ ñ ñ ñ Ÿ
navRight ñ ñ ñ ñ ñ ñ Ÿ
navUp ñ ñ ñ ñ ñ ñ Ÿ
混濁 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
孤兒 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
大綱 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
顏色 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
偏移 ñ ñ Ÿ Ÿ ñ ñ Ÿ
風格 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
寬度 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
溢出 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
X Ÿ Ÿ Ÿ Ÿ Ÿ ñ Ÿ
Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ ñ Ÿ
填充 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
BreakAfter Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
BreakBefore Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
BreakInside ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
暫停 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
音高 ñ ñ Ÿ Ÿ ñ ñ ñ
範圍 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
pointerEvents ñ ñ ñ ñ Ÿ ñ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
報價 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
調整大小 ñ ñ ñ ñ Ÿ ñ ñ
豐富 ñ ñ Ÿ Ÿ ñ ñ ñ
正確的 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
ROWSPAN ñ ñ ñ ñ ñ ñ Ÿ
rubyAlign Ÿ Ÿ ñ ñ ñ ñ ñ
rubyOverhang Ÿ Ÿ ñ ñ ñ ñ ñ
rubyPosition Ÿ Ÿ ñ ñ ñ ñ ñ
scrollbar3dlightColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarArrowColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarBaseColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarDarkShadowColor Ÿ Ÿ ñ ñ ñ ñ ñ
scrollbarDarkshadowColor ñ ñ ñ ñ ñ ñ Ÿ
scrollbarFaceColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarHighlightColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarShadowColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarTrackColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
shapeRendering ñ ñ ñ ñ Ÿ ñ Ÿ
大小 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
solidColor ñ ñ ñ ñ ñ ñ Ÿ
solidOpacity ñ ñ ñ ñ ñ ñ Ÿ
發言 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ ñ ñ
數字 ñ ñ Ÿ Ÿ ñ ñ ñ
標點 ñ ñ Ÿ Ÿ ñ ñ ñ
speechRate ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
stopColor ñ ñ ñ ñ Ÿ ñ Ÿ
stopOpacity ñ ñ ñ ñ Ÿ ñ Ÿ
壓力 ñ ñ Ÿ Ÿ ñ ñ ñ
中風 ñ ñ ñ ñ Ÿ ñ Ÿ
Dasharray ñ ñ ñ ñ Ÿ ñ Ÿ
Dashoffset ñ ñ ñ ñ Ÿ ñ Ÿ
Linecap ñ ñ ñ ñ Ÿ ñ Ÿ
Linejoin ñ ñ ñ ñ Ÿ ñ Ÿ
Miterlimit ñ ñ ñ ñ Ÿ ñ Ÿ
不透明度 ñ ñ ñ ñ Ÿ ñ Ÿ
寬度 ñ ñ ñ ñ Ÿ ñ Ÿ
styleFloat Ÿ Ÿ ñ ñ ñ Ÿ Ÿ
tableLayout Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textAlign Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
最後 Ÿ Ÿ ñ ñ ñ ñ ñ
textAutospace Ÿ Ÿ ñ ñ ñ ñ ñ
textAnchor ñ ñ ñ ñ Ÿ ñ Ÿ
textDecoration Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
閃爍(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
刪除線(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
無(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
劃線(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
下劃線(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
textIndent Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textJustify Ÿ Ÿ ñ ñ ñ ñ ñ
修剪 Ÿ Ÿ ñ ñ ñ ñ ñ
textKashida Ÿ Ÿ ñ ñ ñ ñ ñ
空間 Ÿ Ÿ ñ ñ ñ ñ ñ
textOverflow Ÿ Ÿ ñ ñ ñ ñ ñ
textRendering ñ ñ ñ ñ Ÿ ñ Ÿ
textShadow ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
textTransform Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textUnderlinePosition Ÿ Ÿ ñ ñ ñ ñ ñ
頂部 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
unicodeBidi Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
vectorEffect ñ ñ ñ ñ ñ ñ Ÿ
verticalAlign Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
viewportFill ñ ñ ñ ñ ñ ñ Ÿ
不透明度 ñ ñ ñ ñ ñ ñ Ÿ
能見度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
voiceFamily ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
體積 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
空白 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
寡婦 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
寬度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
wordSpacing Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
換行 Ÿ Ÿ ñ ñ Ÿ ñ ñ
writingMode Ÿ Ÿ ñ ñ Ÿ ñ Ÿ
的ZIndex Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
變焦 Ÿ Ÿ ñ ñ ñ ñ ñ

關於注style.cssText

DOM level2行情規格定義cssText財產

聲明塊(不包括周圍的花括號)的可分析文本表示。 設置此屬性將導致新的價值和重置聲明塊中的所有屬性,包括取消或屬性除了解析。

這意味著你可以設置你所有的樣式屬性,通過設置el.style.cssText = myCSSTextString = myCSSTextString。 此外,正確的格式字符串是正常的CSS語法,如你會在標籤的樣式屬性分配<p style="color: red; padding: 1em 2em; border-bottom: 2px solid #ccc">Hello world</p>您好<p style="color: red; padding: 1em 2em; border-bottom: 2px solid #ccc">Hello world</p> 你甚至可以設置屬性不止一次在相同的字符串,瀏覽器將調和解析樣式表時,因為它會重複。

,但是有一些注意事項與使用cssText賦值。

  • 歌劇院將拋出一個錯誤,如果有任何字符串的格式不正確的CSS。 (該規範建議拋出一個錯誤,如果所賦的值有語法錯誤是unparsable有什麼可以讓一個值“unparsable”的CSS的討論,但所有其他的瀏覽器忽略他們不明白的聲明。)
  • Firefox 2中可以改變的背景位置的y值,重用的cssText值cssText轉讓(如與+ =追加)。 這是固定在FF3的。

可能有其他方面的考慮,我還沒有發現。 在另一面,基準測試表明,分配一個通過單一屬性cssText只是稍微慢比樣式集合中設置相應的屬性,並設置多個屬性顯著通過更快cssText cssText 。 歌劇 9.27是唯一的例外,它總是更快(在我的測試中,至少)直接設置的樣式屬性。

有樂趣讓你的風格!

分享和擴展: 書籤del.icio.us | Digg它! | 書籤交易!

8評論

  1. 我一直在使用這樣的技術檢測,在罕見的情況下CSS從 JavaScript的支持。

    if (!YAHOO.lang.isUndefined(n.style.maxWidth))

    克里斯 - Griego評論2008年6月12日

  2. 在FF2 +,你不能在JavaScript CSS的背景位置“的價值。
    當然,如果你在JavaScript中,你會得到它。

    而在FF2 +負“的z - index值(”絕對“,”相對“,”固定資產“)元素使得該元素不可見。

    雙方應在FF3的固定

    我的2美分

    關於
    Darek

    評論Darek腰膨大- 2008年6月12日,

  3. 這是偉大的。 你會考慮更新此圖表的標題(瀏覽器),每30或50行或重複?

    5307853 - 2008年6月12日日#

  4. 非常有用,感謝。 任何想法是否改變cssText比改變類快?

    評論馬特羅賓遜 - 2008年6月13日

  5. 9.5歌劇院是昨天公佈的考慮,我不明白為什麼你會使用一個真的老了beta版本的瀏覽器。 當前的版本號是10063,而你測試的版本是內部版本號 4808。

    評論馬呂斯瑞摩斯伴侶- 2008年6月13日,

  6. [...]通過點擊看到的CSS屬性全表。 [...]

    Pingback由一個各出奇招« outaTiME - 2008年6月13日

  7. @馬特,

    我沒有分配基準 cssText VS設置的className。 一般來說,直接設置元素的樣式是唯一可取的,當你需要動態分配的值。 除了更好的做法,它是最有可能更快更新的className,因為瀏覽器不需要做額外的步驟解析cssText和更新元素的樣式集合的屬性,重繪前。

    @馬呂斯,瑞摩斯
    我有可能誤讀組建編號。 因為我已經安裝了9.5 GA和驗證有沒有修改的風格集合的​​成員。 順便說一下,蜻蜓顯示“音頻級”,“休息”,休息後“,和”先休息“,但他們顯然沒有 audioLevel(ETC)的樣式集合的代表。

    評論盧克- 2008年6月13日

  8. 提示:一次更改多個元素的多個屬性。

    multipleSpans = YAHOO.util.Dom.getElementsByClassName('多','跨越');
    YAHOO.util.Dom.setStyle(multipleSpans,“cssText”,“文本裝飾:下劃線;光標:指針;');

    本Swieringa評論- 2008年6月23日

抱歉,評論形式此時關閉。

主辦雅虎

版權所有© 2006-2011雅虎公司保留所有權利。 隱私政策 - 服務條款

支持WordPress的關於雅虎 虛擬主機