麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

HTML表單元素覆蓋樣式元素問題及其補救之道

2024-08-26 00:21:46
字體:
供稿:網(wǎng)友
在設(shè)計HTML頁面的過程中經(jīng)常會遇到表單元素覆蓋樣式元素引起的問題,圖一就是一個典型的例子。不要小看這個貌似“低級”的問題,即使一些規(guī)模較大的網(wǎng)站上類似的問題也絕不鮮見。本文探討了造成這一問題的根本原因,并提出一種補救辦法――之所以說補救辦法而不是一勞永逸的解決辦法,是因為微軟和NetScape這兩個巨頭也還沒有對策。


  一、HTML元素的顯示優(yōu)先級

  HTML中常用的表單元素包括:文本區(qū)域(TEXTAREA),列表框(SELECT),文本輸入框(INPUT type=text),密碼輸入框(INPUT type=password),單選輸入框(INPUT type=radio),復(fù)選輸入框(INPUT type=checkbox),等等。常見的非表單元素包括:鏈接標(biāo)記(A),DIV標(biāo)記,SPAN標(biāo)記,TABLE標(biāo)記,等等。表單元素覆蓋樣式元素的根本原因在于HTML元素默認的顯示優(yōu)先級規(guī)則,例如:幀元素總是比其他HTML元素優(yōu)先,因此也總是顯示在最前面;表單元素總是比所有非表單元素優(yōu)先。

  所有這些HTML元素又可以根據(jù)其顯示要求分成兩類,即有窗口的HTML元素(Windowed Element),無窗口的HTML元素(Windowless Element)。有窗口的元素包括:SELECT元素,OBJECT元素,插件,IE 5.01以及更早版本中的IFRAME元素。無窗口的元素包括:大多數(shù)的普通HTML元素,如鏈接和TABLE標(biāo)記,除了SELECT元素之外的大多數(shù)表單元素,NS6+/IE 5.5以及更高版本中的IFRAME元素。本文討論的問題主要與有窗口的HTML元素有關(guān),問題的癥結(jié)其實就在于操作系統(tǒng)默認總是把有窗口的元素顯示在無窗口的元素前面。

  二、瀏覽器類型與顯示優(yōu)先級

  按照瀏覽器類型比較,HTML元素的顯示次序也有所不同,總結(jié)如下:

  ⑴ Netscape/Mozilla

  在NS瀏覽器6.0以前的版本中,表單元素總是比其他HTML元素有更高的優(yōu)先級。但在NS 6+瀏覽器中,IFRAME元素和所有表單元素的顯示次序或者由CSS的z-index屬性值確定,或者由它們在HTML頁面中出現(xiàn)的次序確定,但SELECT元素除外。

  ⑵ Internet Explorer

  在最新的IE瀏覽器(6.0)中,IFRAME元素和所有表單元素根據(jù)z-index屬性值或它們在HTML頁面中出現(xiàn)的次序來確定顯示優(yōu)先次序,但SELECT元素除外。

  ⑶ Opera

  在最新的Opera(7.10*)瀏覽器中,包括SELECT在內(nèi)的所有表單元素根據(jù)z-index屬性或它們在HTML頁面中的出現(xiàn)次序來確定顯示優(yōu)先級。但是,最新的Opera瀏覽器不將IFRAME作為無窗口元素顯示,IFRAME被看做有窗口元素,在顯示次序上要比所有無窗口元素優(yōu)先。

  三、CSS的z-index屬性

  我們知道,CSS的z-index屬性可以用來控制任意HTML元素顯示時的覆蓋次序。當(dāng)多個HTML元素重疊在同一空間中時,z-index值較大的元素將覆蓋z-index值較小的元素。

  但z-index屬性值不是萬能的。如前所述,有窗口的元素總是顯示在無窗口元素的前面,z-index屬性值只有在同一類元素之間才起決定作用。形象地說,有窗口元素和無窗口元素就像畫在同一瀏覽器窗口的兩塊不同畫布上,兩類元素分別自成體系,它們的z-index屬性也只相對于同一畫布上的其他元素起作用。

  四、補救之道

  就目前的瀏覽器而言,一種比較有效的補救辦法是:當(dāng)無窗口元素需要覆蓋有窗口元素時,運用腳本程序動態(tài)地隱藏有窗口元素。下面是一個完整的例子:

<html><head>
<style type="text/css">
.menuBlock{position:relative;top:14px;width:165px;border:2px solid black;}
#subMenus{position:relative;left:15px;top:15px;width:171px;
padding-left:2px;padding-right:2px;border:2px solid black;
z-index:100;visibility:hidden;}
#lb_1{position:absolute;left:10px;top:40px; }
</style>

<script type="text/javascript">
var isActive = false;

function showMenu(){
isActive = true;
//document.getElementById("lb_1").style.visibility="hidden";
document.getElementById("subMenus").style.visibility="visible";
}

function hideMenu(){
isActive = false;
setTimeout('hide()',100);
}

function hide(){
if(!isActive){
document.getElementById("subMenus").style.visibility = "hidden";
document.getElementById("lb_1").style.visibility="visible";
}
}

function setStyle(menuItem){
isActive = true;
menuItem.style.backgroundColor = "Gray";
menuItem.style.color = "#FFFFFF"
}

function setDefault(menuItem){
isActive = false;
menuItem.style.backgroundColor = "";
menuItem.style.color = ""
hideMenu();
}
</script></head><body>

<div id="main" style="position:absolute;width:200px;">
<div id="menuBlock" class="menuBlock" onmouseover="showMenu();"
onmouseout="hideMenu();">CSS菜單</div>
<div id="subMenus" >
<div id="0" onmouseover="setStyle(this)"
onmouseout="setDefault(this)" >菜單項目一</div>
<!--共四個菜單項目 -->
</div><P>
<select id="lb_1" name="lb_1">
<option value="-1"/>選擇列表
 <!-- 三個選項 -->
</select>
</div>
</body></html>

  頁面的<STYLE>部分定義了三個樣式,分別用于菜單條、菜單項目、選擇列表,通過樣式定義保證菜單、選擇列表的顯示區(qū)域重疊。<BODY>部分包含菜單和<SELECT>選擇列表的定義。當(dāng)鼠標(biāo)經(jīng)過菜單條時,JavaScript函數(shù)showMenu執(zhí)行,顯示出菜單,同時隱藏SELECT選擇列表。鼠標(biāo)離開后,hideMnu函數(shù)隱藏菜單,同時恢復(fù)選擇列表。其余幾個JavaScript函數(shù)主要用于模擬菜單動作,鼠標(biāo)經(jīng)過菜單項時以高亮度顯示菜單(setStyle函數(shù)),鼠標(biāo)離開菜單項目時則將它恢復(fù)默認顯示形式(setDefault函數(shù))。頁面的運行效果如圖二所示。將showMenu函數(shù)中的document.getElementById("lb_1").style.visibility="hidden"語句注釋掉就可以看到圖一的效果。

<descript>
<img src=http://www.chinahtml.com/cce/img/553/04601t02.jpg>
</descript>


  總之,表單元素覆蓋樣式元素的根源在于HTML元素默認的顯示優(yōu)先級規(guī)則。本文介紹的補救辦法確實行之有效,不過如果你實在不想用這種辦法,那就只好考慮改變頁面布局,避免表單元素和樣式元素的顯示區(qū)域重疊。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 韩毛片| 欧美18—19sex性护士中国 | www噜噜偷拍在线视频 | 九九热久久免费视频 | 香蕉黄色网| 看一级毛片 | 欧美一级免费看 | 久久思思爱 | 一级电影中文字幕 | caoporn国产一区二区 | 在线亚洲欧美日韩 | 黄在线观看在线播放720p | 亚洲成人福利电影 | 伊人在线 | 操碰网| 久久精品一区二区三区四区五区 | 久久精品无码一区二区日韩av | av免费在线网 | 91精品国产福利尤物免费 | 久久狠狠高潮亚洲精品 | 久久久久性 | 黄视频网址 | 福利在线免费视频 | 亚洲影视中文字幕 | 男女隐私免费视频 | 精品一区二区久久久久久久网精 | 亚洲网站在线观看视频 | 欧美日韩爱爱视频 | 久久久在线 | 久久精品视频3 | hd性videos意大利复古 | 最新毛片在线观看 | 一区二区三区视频在线播放 | 日韩视频中文 | 一级免费特黄视频 | 毛片av网 | 日本高清无遮挡 | 亚洲一二区精品 | 久久99国产精品久久99果冻传媒 | 久久久av亚洲男天堂 | 日本一区二区久久 |