關於HTMLObject中三個Style例項的區別
我們在網頁元素中定義的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屬性,不過這樣太麻煩了。
在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/,如需轉載請自行聯絡原博主。
相關文章
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項關閉Oracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項啟動Oracle
- list-style與list-style-type的區別
- offset與style區別
- String中三種加法的區別
- oracle 關於例項恢復的一個討論Oracle
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- 請教一個關於JdonFrameworkTest例項的問題Framework
- html中list-style-type與list-style的區別HTML
- 如何區分例項化網格中的每個例項
- 例項物件和函式物件的區別物件函式
- Oracle中truncate和delete的區別(例項)Oracledelete
- oracle例項和資料庫的區別Oracle資料庫
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- 10 個基於 JavaScript 的機器學習例項JavaScript機器學習
- 資料庫和例項instance的區別資料庫
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構-程式全域性區(PGA)Oracle記憶體
- 判斷一個類是否為另一個類的例項 instanceof關鍵字和isAssignableFrom方法的區別
- CSS中 offsetLeft 與style.left 的區別CSS
- 關於HashMap和Hashtable的區別HashMap
- 關於CI,ASCS,DI的區別
- 關於sysdba,sysoper,dba的區別
- 使用SRVCTL啟動例項與使用sqlplus啟動例項的區別SQL
- 關於mssql中go等幾個關鍵字的用途及區別SQLGo
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構-系統全域性區(SGA)Oracle記憶體
- outerText和innerText屬性的區別例項介紹
- oracle資料庫名和例項名的區別Oracle資料庫
- Cookie、localStorage 和 sessionStorage 的區別及應用例項CookieSession
- 關於JS中變數的作用域-例項JS變數
- js中style,currentStyle和getComputedStyle的區別JS
- nginx關於root與alias的區別Nginx
- 關於C與C++的區別C++
- 關於 in與exist , not in與not exist 的區別
- 關於JSF與Struts的區別JS
- 關於gcc、make和CMake的區別GC
- offsetwidth與style.width 區別
- php class中public,private,protected,static的區別,以及例項PHP
- 關於JSP 例項方法的執行緒安全JS執行緒