HTML元素的顯示優先級
一、HTML元素的顯示優先級(顯示層次問題,哪個在上哪個在下!總是顯示在最前面)
幀元素>HTML元素優先,表單元素總>非表單元素優先
HTML中常用的表單元素包括:文本區域(TEXTAREA),列表框(SELECT),文本輸入框,密碼輸入框,單選輸入框,復選輸入框等等。常見的非表單元素包括:鏈接標記(A),DIV標記,SPAN標記,TABLE標記等等。表單元素覆蓋樣式元素的根本原因在於HTML元素默認的顯示優先級規則。
所有這樣HTML元素又可以根據其顯示要求分成兩類,即有窗口的HTML元素(Windowed Element),無窗口的HTML元素(Windowless Element)。有窗口的元素包括:SELECT元素,OBJECT元素,插件,IE5.01以主更早版本中的IFRAME元素。無窗口的元素包括:大多數的普通HTML元素,如鏈接和TABLE標記,除了SELECT元素之外的大多數表單元素。
二、瀏覽器類型與顯示優先級
按照瀏覽器類型比較,HTML元素的顯示次序也有所不同,總結如下:
⑴ Netscape/Mozilla
在NS瀏覽器6.0以前的版本中,表單元素總是比其他HTML元素有更高的優先級。但在NS 6+瀏覽器中,IFRAME元素和所有表單元素的顯示次序或者由CSS的z-index屬性值確定,或者由它們在HTML頁面中出現的次序確定,但SELECT元素除外。
在NS瀏覽器6.0以前的版本中,表單元素總是比其他HTML元素有更高的優先級。但在NS 6+瀏覽器中,IFRAME元素和所有表單元素的顯示次序或者由CSS的z-index屬性值確定,或者由它們在HTML頁面中出現的次序確定,但SELECT元素除外。
(2)Netscape/Mozilla
在NS瀏覽器6.0以前的版本中,表單元素總是比其他HTML元素有更高的優先級。但在NS 6+瀏覽器中,IFRAME元素和所有表單元素的顯示次序或者由CSS的z-index屬性值確定,或者由它們在HTML頁面中出現的次序確定,但SELECT元素除外。
在NS瀏覽器6.0以前的版本中,表單元素總是比其他HTML元素有更高的優先級。但在NS 6+瀏覽器中,IFRAME元素和所有表單元素的顯示次序或者由CSS的z-index屬性值確定,或者由它們在HTML頁面中出現的次序確定,但SELECT元素除外。
⑶ Opera
在最新的Opera(7.10*)瀏覽器中,包括SELECT在內的所有表單元素
根據z-index屬性或它們在HTML頁面中的出現次序來確定顯示優先級。但是,最新的Opera瀏覽器不將IFRAME作為無窗口元素顯示,IFRAME被看做有窗口元素,在顯示次序上要比所有無窗口元素優先。
三、CSS的z-index屬性
我們知道,CSS的z-index屬性可以用來控制任意HTML元素顯示時的覆蓋次序。當多個HTML元素重疊在同一空間中時,z-index值較大的元素將覆蓋z-index值較小的元素。
但z-index屬性值不是萬能的。如前所述,有窗口的元素總是顯示在無窗口元素的前面,z-index屬性值只有在同一類元素之間才起決定作用。形象地說,有窗口元素和無窗口元素就像畫在同一瀏覽器窗口的兩塊不同畫布上,兩類元素分別自成體系,它們的z-index屬性也只相對於同一畫布上的其他元素起作用。
我們知道,CSS的z-index屬性可以用來控制任意HTML元素顯示時的覆蓋次序。當多個HTML元素重疊在同一空間中時,z-index值較大的元素將覆蓋z-index值較小的元素。
但z-index屬性值不是萬能的。如前所述,有窗口的元素總是顯示在無窗口元素的前面,z-index屬性值只有在同一類元素之間才起決定作用。形象地說,有窗口元素和無窗口元素就像畫在同一瀏覽器窗口的兩塊不同畫布上,兩類元素分別自成體系,它們的z-index屬性也只相對於同一畫布上的其他元素起作用。