網(wǎng)頁二,三級菜單制作

網(wǎng)頁二級菜單制作的方式可以采用兩種方式來實現(xiàn)瓤逼,第一種使用純CSS控制酥泞,第二種使用JavaScript+CSS给猾。下面分別用兩種方式來實現(xiàn)二級菜單。

不管采用哪種方式來實現(xiàn)先朦,基本的html元素是不變的缰冤。基本的html元素如下:

<div id="menu">
??? <ul>
??????? <li><a href="#">首頁</a></li>
??????? <li><a href="#">首頁</a>
??????????? <ul>
??????????????? <li><a href="#">二級菜單</a></li>
???????????????? <li><a href="#">二級菜單</a></li>
??????????? </ul>
??????? </li>
??????? <li><a href="#">首頁</a>
??????????? <ul>
??????????????? <li><a href="#">二級菜單</a></li>
???????????????? <li><a href="#">二級菜單</a></li>
??????????? </ul>
??????? </li>
??????? <li><a href="#">首頁</a></li>
??????? <li><a href="#">首頁</a></li>
??????? <li><a href="#">首頁</a></li>
??? </ul>
</div>

一喳魏、CSS實現(xiàn)二級菜單

使用一下的樣式就可以實現(xiàn)二級菜單的顯示:

????? *{ margin:0px;padding:0px;}
???? #menu{ background-color :#eee; width:600px; margin:0 auto; height:40px; }
???? ul{ list-style:none;}
???? ul li{ float:left ; line-height:40px; text-align:center; position :relative; }
???? a{ text-decoration:none;color:#000;display:block ;width:90px;}
???? a:hover{color:#fff; background-color:#666;}
???? ul li ul li{float:none;border-left:none; background-color:#eee;margin-top:2px; }
???? ul li ul{ display:none; position:absolute; width:90px;}
???? ul li ul li a:hover{ background-color:#06f;}
???? ul li:hover ul{ display:block;}

其中注意的地方有:

1棉浸、*號代表所以有的元素;

2刺彩、line-height屬性迷郑,可以設(shè)置文字垂直居中。原理:因為line-height代表的字的行高创倔,如果父元素的高度為50px且padding值為0嗡害,字體設(shè)置為20px,line-height設(shè)置為30px,那么該文字在父容器中是居中,上面下面都有15px的留白,所以只要設(shè)置行高和父容器的行高一樣那么文字就是垂直居中畦攘。當(dāng)父容器太大的時候只需要包含文字的容器在中間顯示霸妹,可以對包含文字的容器進行設(shè)置margin-top屬性或者對父容器設(shè)置padding-top屬性。

3知押、hover選擇器與:之間不能有空格,養(yǎng)成良好的習(xí)慣台盯,如果有空格罢绽,可能不會顯示正確樣式效果。

4静盅、相對定位與絕對定位:

<div id="one">
??? one
??????? <div id="two">
??????? two
??????????? <div id="three">
??????????????? three
??????????? </div>
??????? </div>
??? </div>

css的控制代碼如下:

? ? div{? margin-left:0px;}
??? #one{ height:500px; border:1px solid red; width:500px; position:relative}
??? #two{ height:300px; border:1px solid blue; width:300px; margin :0px; position :relative }
???? #three{ height:100px; border:1px solid black ; width:100px;position :absolute;top:50px left:20px }

其中#three設(shè)置的是絕對定位良价,那么當(dāng)他的上級容器沒有設(shè)置為相對定位的時候,那么#three就是相對瀏覽器的左上角定位温亲,否則#three就相對于上級容器定位棚壁。在該實例中,#three是相對于#two進行絕對定位的栈虚,如果#two沒有進行相對定位袖外,那么#three就是相對于#one進行絕對定位。如果#three的上級元素都有相對定位的話魂务,那么就相對于距離其最近的上級元素進行絕對定位曼验。在我的感覺中相對定位是配合絕對定位使用泌射,其中絕對定位的元素不屬于文檔流中的一部分。

在進行絕對定位的時候用top鬓照、left熔酷、right、bottom來指定相對上級元素的位置豺裆,但是如果不設(shè)置top拒秘、left、right臭猜、bottom元素躺酒,而是設(shè)置margin又會是不一樣的效果。將#three的中的top和left屬性去掉蔑歌,加上margin-top和margin-left會使得#three相對自己本身的位置進行左上偏離羹应,至于本來的位置在哪里,可以根據(jù)在可視化工具中去查看次屠。

二园匹、JavaScript+CSS實現(xiàn)二級菜單

使用下列的樣式和JavaScript腳本:

? <style type="text/css">
???? *{ margin:0px;padding:0px;}
???? #menu{ background-color :#eee; width:600px; height:40px; margin:0 auto;}
???? ul{ list-style:none;}
???? ul li{ float:left ; line-height:40px; text-align:center; position :relative; }
???? a{ text-decoration:none;color:#000;display:block ;width:90px;}
???? a:hover{color:#fff; background-color:#666;}
???? ul li ul li{float:none;border-left:none; background-color:#eee;margin-top:2px; }
???? ul li ul{ display:none; position:absolute; width:90px;}

??? </style>
??? <script type="text/javascript">
??????? function show(li) {
??????????? var submenu = li.getElementsByTagName("ul")[0];
??????????? submenu.style.display = "block";
??????? }
??????? function hide(li) {
??????????? var submenu = li.getElementsByTagName("ul")[0];
??????????? submenu.style.display = "none";
??????? }
??? </script>

其中注意的地方有:

1、document.getElementsByTagName("tagname")函數(shù)返回的是在document文檔中返回tagname標(biāo)簽數(shù)組劫灶。當(dāng)然每個對象都可以使用getElementsByTagName的方法裸违,不同的對象使用該方法只能從該對象的下級元素中去搜索tagname標(biāo)簽。

二浑此、CSS三級菜單的實現(xiàn)

三級菜單的實現(xiàn)和二級菜單是一樣的原理累颂,其核心是利用三級菜單相對于二級的絕對定位。其中定位屬性有繼承的效果凛俱。


一切情緒皆痛苦紊馏,沒有什么情緒是快樂的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲犬,一起剝皮案震驚了整個濱河市朱监,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌原叮,老刑警劉巖赫编,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奋隶,居然都是意外死亡擂送,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門唯欣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘹吨,“玉大人,你說我怎么就攤上這事境氢◇翱剑” “怎么了碰纬?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長问芬。 經(jīng)常有香客問我悦析,道長,這世上最難降的妖魔是什么此衅? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任强戴,我火速辦了婚禮,結(jié)果婚禮上炕柔,老公的妹妹穿的比我還像新娘酌泰。我一直安慰自己,他們只是感情好匕累,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著默伍,像睡著了一般欢嘿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也糊,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天炼蹦,我揣著相機與錄音,去河邊找鬼狸剃。 笑死掐隐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钞馁。 我是一名探鬼主播虑省,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼僧凰!你這毒婦竟也來了探颈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤训措,失蹤者是張志新(化名)和其女友劉穎伪节,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绩鸣,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡怀大,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了呀闻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片化借。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖总珠,靈堂內(nèi)的尸體忽然破棺而出屏鳍,到底是詐尸還是另有隱情梳虽,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布优炬,位于F島的核電站怨喘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏山涡。R本人自食惡果不足惜堤结,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸭丛。 院中可真熱鬧竞穷,春花似錦、人聲如沸鳞溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟菲。三九已至看政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抄罕,已是汗流浹背允蚣。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呆贿,地道東北人嚷兔。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像做入,于是被迫代替她去往敵國和親冒晰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容