關於HTMLObject中三個Style例項的區別

唐玄奘發表於2017-12-19

 我們在網頁元素中定義的CSS屬性,會被對映成該DHTML物件中Style物件(不是Style Tag物件)的例項。我們可以使用import-style[1]和inline-style[2]為網頁元素指定CSS屬性,同時也可以使用element. style. attributeName = `…`的形式在Web頁尾本中設定其值。但是同一個元素上的這些CSS屬性值並不是都疊加後對映到同一個Style物件的例項上。

    我們使用指令碼最常訪問的Style物件,一般是element[3].style,但是這個物件只能反映出inline-style和使用指令碼設定的樣式值。同時這個element.style是不能訪問元素的import-style的屬性設定的。如果非要訪問,可以使用styleSheets集合,在裡面遍歷獲得元素的import-style屬性,不過這樣太麻煩了emcrook.gif

    在IE5.0及以後,微軟為HTML Object提供了兩個新的Style物件例項,分別是:currentStyle和runtimeStyle。

    currentStyle可以獲元素的實際表現出來的CSS屬性,就是說除了inline-style、import-style外,還包括了HTML元素屬性的設定和HTML元素預設屬性的累加。累加的預設優先順序是:inline-style > import-style > HTML Attribute >
HTML default。例如:<div
style=”display:inline”></div>。其currentStyle.display將會是inline,雖然div本身預設的display是block。不過對於inline-style和import-style的優先順序不是絕對的,它倆還可以使用
! important限定符來定製優先順序,當然要是都使用了 !
important限定,就和都沒有用一樣。同時currentStyle還可以獲取display屬性為none的元素的CSS屬性,得到的屬性值和其顯示時的值相同。由於currentStyle是一個非同步物件,其實際取值依賴於它的實際顯示狀態,而不依賴於指令碼對style的賦值。

   

runtimeStyle也是Style物件的例項,所有的runtimeStyle的屬性在預設狀態下都是為空的(就是沒有指定值)。那麼它是用來幹什麼的呢?這個屬性和style基本沒有什麼關係,顧名思義,它是在執行時刻控制元素的CSS屬性的,設定了runtimeStyle後會影響currentStyle的對應屬性值,同時也會在HTML元素的顯示上表現出來。它的最大特點是,當我們把修改過的CSS屬性的值再次清掉(賦“)的時候,其HTML元素的CSS屬性會變為賦值前的值,同時currentStyle也還原了。runtimeStyle設定的屬性具有最高的優先順序,但是它不是永久的。

    style的用途不說了,太easy。currentStyle用來取元素實際表現得CSS屬性。而runtimeStyle的用途除了本頁提供的”Resume“功能這種情況外,想了半天再也想不出啥別的大作用了。

 

    [1]. import-style是指在HTML元素中使用class屬性或者使用其id等直接為元素指派的外部CSS屬性。例如:<div class=”fontSize”></div>。

    [2]. inline-style是指在HTML元素中使用style屬性直接為其指派的CSS屬性。例如:<div style=”width: 100%; height: 100%”></div>。

    [3]. 泛指Web頁中的HTML標籤元素。

本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯絡原博主。


相關文章