黃衛(wèi)+楊文遠(yuǎn)
摘要:該文闡述了使用CSS、javascript等技術(shù)將HTML無(wú)序列表生成動(dòng)態(tài)的下拉菜單,以及利用存儲(chǔ)于站點(diǎn)地圖中的數(shù)據(jù)“輕松”實(shí)現(xiàn)類(lèi)似效果,各有其特點(diǎn),廣泛應(yīng)用在網(wǎng)頁(yè)制作中。
關(guān)鍵詞:CSS;javascript;Menu;下拉菜單
中圖分類(lèi)號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)35-0238-01
1 概述
很多網(wǎng)站制作都會(huì)將導(dǎo)航(菜單)應(yīng)用進(jìn)來(lái),以提升網(wǎng)站交互體驗(yàn)。下拉菜單是最常見(jiàn)的效果之一,用鼠標(biāo)移過(guò)去時(shí),就會(huì)出現(xiàn)下一級(jí)子菜單,網(wǎng)站的結(jié)構(gòu)(頁(yè)面節(jié)點(diǎn)分布)展現(xiàn)的一目了然。制作下拉菜單可以是客戶(hù)端運(yùn)行的CSS、JavaScript等技術(shù),也可以使用服務(wù)端運(yùn)行的Menu控件等。本文討論3種快速制作三級(jí)下拉菜單的方法,并闡述其特點(diǎn),以供比較分析。
2 下拉菜單靜態(tài)部分
設(shè)計(jì)一個(gè)實(shí)現(xiàn)三級(jí)導(dǎo)航的下拉菜單,采用HTML文檔的無(wú)序列表,通過(guò)
HTML代碼如下:
3 動(dòng)態(tài)效果的實(shí)現(xiàn)
將鼠標(biāo)放在一級(jí)菜單上,彈出下拉菜單,移入位置加入不同顏色以示區(qū)別,鼠標(biāo)移走則菜單消失,本文介紹以下幾種方法。
3.1 純CSS方法實(shí)現(xiàn)
CSS提供了一個(gè)hover偽類(lèi),通過(guò)設(shè)置其display屬性的none、block值來(lái)控制下拉菜單的出現(xiàn)和隱藏。鼠標(biāo)移動(dòng)某級(jí)菜單時(shí),所顯示的子菜單位置和父級(jí)菜單不一樣,使用position定位來(lái)控制下拉菜單的位置。設(shè)置float:left實(shí)現(xiàn)一級(jí)菜單為水平排列,而其他各級(jí)菜單則要求豎向排列,用::after偽元素選擇器來(lái)清除浮動(dòng)。CSS代碼如下:
#nav {margin:100px auto; text-align:center;}
#nav ul {border-radius:10px;background:#CCFFFF;padding:020px;position:relative;list-style :none;}
#nav ul li {float:left; }
#nav ul::after {content:"";display:block;clear:both;}
#nav ul li a
{display:block;padding:25px40px;color:#000;text-decoration:none;font-family:Arial;}
#nav ul li:hover > ul {display:block;}
#nav ul li:hover{background:(#5F6975);}
#nav ul li, nav ul ul li:hover a {color:#FFF;}
#nav ulul
{display:none;background:#99CCCC;border-radius:0;position:absolute;top:100%;padding:0; }
#nav ul ul li {float:none;border-top:1px solid;border-bottom:1px solid;}
3.2 javascript方法實(shí)現(xiàn)
該方法通過(guò)參數(shù)li,在父級(jí)菜單鼠標(biāo)放入時(shí)添加showsub(li)方法,以及鼠標(biāo)離開(kāi)時(shí)添加hidesub(li)方法實(shí)現(xiàn)子菜單的顯示與消失。制作中仍然引入CSS文件,美化導(dǎo)航菜單。
function showsub(li){
var submenu=li.getElementsByTagName("ul")[0];
submenu.style.display="block";
}
function hidesub(li){
var submenu=li.getElementsByTagName("ul")[0];
submenu.style.display="none";
}
3.3 菜單Menu控件方法實(shí)現(xiàn)[1]
Menu控件運(yùn)行于服務(wù)器端,擺脫了客戶(hù)端不確定因素,它與SiteMapDateSource控件搭配使用,設(shè)置Web.SiteMap站點(diǎn)地圖作為引用數(shù)據(jù)源。Web.SiteMap直觀體現(xiàn)了整個(gè)網(wǎng)站的結(jié)構(gòu)和頁(yè)面間層級(jí)關(guān)系。如有更新,僅需對(duì)
4 三種方法的對(duì)比分析
通過(guò)以上介紹,第一種應(yīng)用純CSS的方法實(shí)現(xiàn)起來(lái)快速簡(jiǎn)單,不引用CSS3特效時(shí),低版本瀏覽器運(yùn)行無(wú)兼容性問(wèn)題,布局與表現(xiàn)相分離使維護(hù)更加容易[2]。但對(duì)于 4級(jí)或以上菜單要按層級(jí)修改CSS代碼。第二方法也大量采用,腳本程序簡(jiǎn)單,可能會(huì)受到客戶(hù)端禁用javascript等因素影響。第三方法優(yōu)勢(shì)在于與站點(diǎn)地圖數(shù)據(jù)實(shí)時(shí)匹配,網(wǎng)站結(jié)構(gòu)清晰,更新菜單層級(jí)和菜單項(xiàng)只需編輯Web.SiteMap,相比前兩種方法,更易維護(hù),增加代碼更少。主要缺陷在于額外增加了服務(wù)器負(fù)擔(dān)。這三種方法網(wǎng)頁(yè)制作者可根據(jù)實(shí)際需求選擇使用,都有項(xiàng)目實(shí)踐的價(jià)值。
參考文獻(xiàn):
[1] 劉乃琦, 郭小芳. ASP.NET應(yīng)用開(kāi)發(fā)與實(shí)踐[M].北京人民郵電出版社,2012.
[2] 魏穎穎.計(jì)算機(jī)技術(shù)與發(fā)展[J].基于CSS的網(wǎng)頁(yè)下拉菜單設(shè)計(jì)與實(shí)現(xiàn), 2011(4).
客服熱線:400-656-5456 客服專(zhuān)線:010-56265043 電子郵箱:longyuankf@126.com
電信與信息服務(wù)業(yè)務(wù)經(jīng)營(yíng)許可證:京icp證060024號(hào)
Dragonsource.com Inc. All Rights Reserved