jQuery實(shí)現(xiàn)菜單顯示效果
前言
上一篇博客更新了在頁(yè)面中可以像Excel表格一樣輸入的表格,這篇博客介紹一下我們經(jīng)??梢栽诟鞔缶W(wǎng)站看到的菜單欄顯示效果的程序。
內(nèi)容
顯示效果:
照例,先上代碼,
HTML代碼:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery實(shí)踐3-菜單效果</title> <script src="script/jquery-1.8.2.js"></script> <script src="script/menu.js"></script> <link href="CSS/menu.css" rel="stylesheet" /> </head> <body> <ul> <li class="main"> <a href="#" >菜單項(xiàng)1 </a> <ul> <li><a href="#" >子菜單項(xiàng)1.1</a></li> <li><a href="#" >子菜單項(xiàng)1.2</a></li> <li><a href="#" >子菜單項(xiàng)1.3</a></li> </ul> </li> <li class="main"> <a href="#" >菜單項(xiàng)2 </a> <ul> <li><a href="#" >子菜單項(xiàng)2.1</a></li> <li><a href="#" >子菜單項(xiàng)2.2</a></li> <li><a href="#" >子菜單項(xiàng)2.3</a></li> </ul> </li> <li class="main"> <a href="#" >菜單項(xiàng)3 </a> <ul> <li><a href="#" >子菜單項(xiàng)3.1</a></li> <li><a href="#" >子菜單項(xiàng)3.2</a></li> <li><a href="#" >子菜單項(xiàng)3.3</a></li> </ul> </li> </ul> <br /> <br /> <br /> <br /> <ul> <li class="hmain"> <a href="#" >菜單項(xiàng)1 </a> <ul> <li><a href="#" >子菜單項(xiàng)1.1</a></li> <li><a href="#" >子菜單項(xiàng)1.2</a></li> <li><a href="#" >子菜單項(xiàng)1.3</a></li> </ul> </li> <li class="hmain"> <a href="#" >菜單項(xiàng)2 </a> <ul> <li><a href="#" >子菜單項(xiàng)2.1</a></li> <li><a href="#" >子菜單項(xiàng)2.2</a></li> <li><a href="#" >子菜單項(xiàng)2.3</a></li> </ul> </li> <li class="hmain"> <a href="#" >菜單項(xiàng)3 </a> <ul> <li><a href="#" >子菜單項(xiàng)3.1</a></li> <li><a href="#" >子菜單項(xiàng)3.2</a></li> <li><a href="#" >子菜單項(xiàng)3.3</a></li> </ul> </li> </ul> </body> </html>
CSS代碼:
ul, li { /*清除ul和li前面的原點(diǎn)*/ list-style: none; } ul { /*清除子菜單的縮進(jìn)值*/ padding: 0; margin: 0; } .main, .hmain { /*給出菜單欄背景圖片*/ background-image: url(../img/菜單效果/title.gif); background-repeat: repeat-x; width: 120px; } li { background-color: #EEEEEE; } a { /*取消所有的下劃線*/ text-decoration: none; padding-left: 20px; display: block; display: inline-block; width: 100px; padding-top: 3px; padding-bottom: 3px; } .main a, .hmain a{ color: white; background-image: url(../img/菜單效果/collapsed.gif); background-repeat: no-repeat; background-position: 3px center; } .main li a, .hmain li a{ color: black; background-image: none; } .main ul, .hmain ul{ display: none; } .hmain { float: left; margin-left:1px; }
JavaScript代碼:
$(document).ready(function () { //頁(yè)面中的DOM已經(jīng)裝載完成時(shí),執(zhí)行的代碼 $(".main > a").click(function () { ////找到主菜單項(xiàng)對(duì)應(yīng)的子菜單項(xiàng) var ulNode = $(this).next("ul"); ulNode.slideToggle(); changeIcon($(this)); }); //簡(jiǎn)化成下列代碼 $(".hmain ").hover(function () { $(this).children("ul").slideDown(); changeIcon($(this).children("a")); }, function () { $(this).children("ul").slideUp(); changeIcon($(this).children("a")); }); }); //修改主菜單的指示圖標(biāo) function changeIcon(mainNode) { if (mainNode) { if (mainNode.css("background-image").indexOf("collapsed.gif") >= 0) { mainNode.css("background-image", "url('img/菜單效果/expanded.gif')"); } else { mainNode.css("background-image", "url('img/菜單效果/collapsed.gif')"); }; }; };
這次代碼稍微有點(diǎn)長(zhǎng),但是對(duì)于一目十行的大神們來(lái)說(shuō)這都不算啥!
總結(jié)
HTML知識(shí)點(diǎn):
- 頁(yè)面中的菜單項(xiàng)可以通過(guò)嵌套的ul和li來(lái)表示
- 菜單最外層為ul,一層每個(gè)主菜單放在一個(gè)li中,如果有子菜單,在這個(gè)主菜單的li中建立新的ul,再依次嵌套即可構(gòu)建多層的菜單
- 瀏覽器中ul和li元素默認(rèn)情況下文字前都有圓點(diǎn)標(biāo)識(shí)符,li元素會(huì)有縮進(jìn)。Opera瀏覽器比較特殊,li的標(biāo)識(shí)符和其他瀏覽器不同
CSS知識(shí)點(diǎn):
- list-style屬性值為none時(shí),可以清除ul和li前面的小圓點(diǎn)
- 清除子菜單的縮進(jìn)值,需要padding和margin都為0,其中IE6和IE7只有margin也為0的時(shí)候才可以清除縮進(jìn)值
- 可以使用background-image來(lái)制定一個(gè)元素的背景圖,如果背景圖比元素的實(shí)際大小要小,那么背景圖會(huì)自動(dòng)在橫向和縱向上重復(fù)顯示,直到填滿整個(gè)區(qū)域
- 可以使用bakeground-repeat來(lái)控制背景圖的重復(fù)填充方向
- 如果一個(gè)元素上同時(shí)定義了背景圖和背景色,那么有背景圖的地方是不會(huì)顯示背景色的
- text-decoration屬性值為none時(shí),可以取消文字的下劃線
- background-position可以控制背景圖的位置,屬性值既可以用數(shù)值,也可以用center,left,top這些值來(lái)控制橫向和縱向的位置。這個(gè)屬性的兩個(gè)值,第一個(gè)對(duì)應(yīng)橫向,第二個(gè)對(duì)應(yīng)縱向
- background-image的值為none表示沒(méi)有背景圖
- background-repeat的值為no-repeat時(shí),背景圖不會(huì)再所在的區(qū)域中重復(fù)顯示
- IE6以外的其他瀏覽器可以通過(guò)設(shè)定display的值為block來(lái)讓a元素充滿所在的區(qū)域。對(duì)于IE6,則需要設(shè)定display為inline-block,同時(shí)設(shè)定a的寬度
- display的值為none可以用于隱藏元素
JavaScript知識(shí)點(diǎn):
- main a 和 .main > a的不同之處,前者選擇使用了.main的這個(gè)class的元素內(nèi)部所有的a節(jié)點(diǎn),后者只選擇.main的子節(jié)點(diǎn)中的a節(jié)點(diǎn)
- show,hide方法可以用于顯示或隱藏元素,沒(méi)有參數(shù)時(shí)的效果和修改css的display屬性效果一樣。參數(shù)可以是單位為毫秒的數(shù)字,或則“slow”“normal”“fast”這三個(gè)文字,都可以來(lái)控制完成顯示或隱藏需要的時(shí)間。注意這時(shí)動(dòng)畫效果考不斷改變?cè)氐膶挾群透叨葋?lái)實(shí)現(xiàn)的
- toggle方法更為強(qiáng)大,可以省去我們判斷元素是顯示還是隱藏的狀態(tài),直接讓顯示的元素隱藏起來(lái),隱藏的元素顯示出來(lái)。參數(shù)使用方法和show,hide相同
- slideDown和slideUp可以實(shí)現(xiàn)向下或者向上卷動(dòng)的效果,實(shí)際上試通過(guò)指定時(shí)間內(nèi)修改元素的高度來(lái)實(shí)現(xiàn)動(dòng)畫效果。需要注意的是這兩個(gè)方法參數(shù)為空的情況和show,hide不同
- slideToggle和toggle達(dá)到的效果類似
- DOCTYPE對(duì)于jQuery中的動(dòng)畫是有影響的。沒(méi)有DOCTYPE定義時(shí),在IE中,jQuery的動(dòng)畫會(huì)出現(xiàn)閃爍的糟糕效果。
- float的值是left,可以使原本各自位于一行的元素全部在一行中向左浮動(dòng)
- 可以給多個(gè)選擇器定義同樣的樣式,選擇器之間用“,”分割。同樣對(duì)于jQuery的“$”方法,也可以傳入各個(gè)選擇器
end
謝謝您的閱讀!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- php+jQuery實(shí)現(xiàn)的三級(jí)導(dǎo)航欄下拉菜單顯示效果
- jQuery實(shí)現(xiàn)的點(diǎn)擊顯示隱藏下拉菜單功能完整示例
- jQuery實(shí)現(xiàn)菜單的顯示和隱藏功能示例
- jQuery實(shí)現(xiàn)點(diǎn)擊后高亮背景固定顯示的菜單效果【附demo源碼下載】
- jQuery實(shí)現(xiàn)可高亮顯示的二級(jí)CSS菜單效果
- jquery實(shí)現(xiàn)在網(wǎng)頁(yè)指定區(qū)域顯示自定義右鍵菜單效果
- jquery實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)顯示下劃線的漸變下拉菜單效果代碼
- jquery實(shí)現(xiàn)鼠標(biāo)滑過(guò)顯示二級(jí)下拉菜單效果
- 基于jquery實(shí)現(xiàn)導(dǎo)航菜單高亮顯示(兩種方法)
- 鼠標(biāo)懸浮顯示二級(jí)菜單效果的jquery實(shí)現(xiàn)
- jquery實(shí)現(xiàn)下拉菜單的二級(jí)聯(lián)動(dòng)利用json對(duì)象從DB取值顯示聯(lián)動(dòng)
- 基于jquery實(shí)現(xiàn)后臺(tái)左側(cè)菜單點(diǎn)擊上下滑動(dòng)顯示
相關(guān)文章
jQuery動(dòng)態(tài)移除與增加onclick屬性的方法詳解
這篇文章主要介紹了jQuery動(dòng)態(tài)移除與增加onclick屬性的方法,結(jié)合實(shí)例形式分析了jQuery使用attr與removeAttr方法針對(duì)元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06jQuery實(shí)現(xiàn)可兼容IE6的遮罩功能詳解
這篇文章主要介紹了jQuery實(shí)現(xiàn)可兼容IE6的遮罩功能,詳細(xì)分析了jQuery遮罩層的布局、樣式及功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09jquery插件jquery.LightBox.js實(shí)現(xiàn)點(diǎn)擊放大圖片并左右點(diǎn)擊切換效果(附demo源碼下載)
這篇文章主要介紹了jquery插件jquery.LightBox.js實(shí)現(xiàn)點(diǎn)擊放大圖片并左右點(diǎn)擊切換效果,可實(shí)現(xiàn)仿相冊(cè)插件切換效果,并附代碼demo源碼供讀者下載參考,需要的朋友可以參考下2016-02-02jquery實(shí)現(xiàn)點(diǎn)擊變換導(dǎo)航樣式的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)點(diǎn)擊變換導(dǎo)航樣式的方法,可實(shí)現(xiàn)點(diǎn)擊導(dǎo)航菜單選項(xiàng)時(shí)動(dòng)態(tài)變換對(duì)應(yīng)選中項(xiàng)樣式的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08基于jQuery實(shí)現(xiàn)select下拉選擇可輸入附源碼下載
一般的select下拉框是不能輸入的,只能供大家選擇,今天小編給大家分享基于jQuery實(shí)現(xiàn)select下拉選擇可輸入附源碼下載,需要的朋友參考下2016-02-02jQuery+HTML5實(shí)現(xiàn)手機(jī)搖一搖換衣特效
經(jīng)常我們玩微信都會(huì)用到查到附近的人,都是在app上實(shí)現(xiàn)手機(jī)搖一搖的功能。現(xiàn)在,我們將此技術(shù)搬移到手機(jī)web上,供大家學(xué)習(xí),有需要的小伙伴可以參考下。2015-06-06jQuery實(shí)現(xiàn)新消息在網(wǎng)頁(yè)標(biāo)題閃爍提示
這篇文章主要介紹了jQuery實(shí)現(xiàn)新消息在網(wǎng)頁(yè)標(biāo)題閃爍提示的相關(guān)資料,需要的朋友可以參考下2015-06-06