jQuery之菜單(垂直菜單和水平菜單)


1、頁面中的菜單項可以通過嵌套的ul和li來表示

2、菜單最外層為ul,一層每個主菜單放在一個li中,如果有子菜單,在這個主菜單的li中建立新的ul,再依次嵌套即可構建多層的菜單

3、瀏覽器中的ul和li元素默認情況下文字前都有圓點標識符,li元素會有縮進,Opera瀏覽器比較特殊,li的標識符和其他瀏覽器不同

4、list-style屬性值為none時(即設置list-style:none),可以清除ul和li前面的小圓點

5、清除子菜單的縮進值,需要padding和margin都為0,其中IE6和IE7只有margin也為0的時候才可以清除縮進值

6、可以使用background-image來指定一個元素的背景圖,如果背景圖比元素的實際大小要小,那么背景圖會自動在橫向和縱向上重復顯示,直到填滿整個區域

7、可以使用background-repeat來控制背景圖的重復填充方式

8、如果一個元素上同時定義了背景圖和背景色,那么有背景圖的地方是不會顯示背景色的

9、text-decoration屬性值為none時,可以取消文字上的下划線

10、background-position可以控制背景圖的位置,屬性值既可以用數值,也可以用center,left,top這些值來控制橫向和縱向的位置。這個屬性的兩個值,第一個對應橫向。第二個對應縱向

11、background-image的值為none表示沒有背景圖

12、background-image的值為no-repeat時,背景圖不會在所在的區域中重復顯示

13、IE6以外的其他瀏覽器可以通過設定display的值設為block讓a元素充滿所在的區域對於IE6,則需要設定display為inline-block,同時設定a的寬度

14、display的值為none可以用於隱藏元素

15、.main a和 .main > a不同之處,前者選擇使用了.main的這個class的元素內部所有的a節點,后者只選擇 .main的子節點中的a節點

16、show,hide方法可以用於顯示或隱藏元素,沒有參數時的效果和修改CSS的display屬性效果一樣。參數可以是單位為毫秒的數字,或者是slow,normal,fast這三個文字,都可以來控制完成顯示或隱藏需要的時間。注意這時動畫效果靠不斷改變元素的寬度和高度來實現的。

17、toggle方法更為強大,可以省去我們判斷元素是顯示還是隱藏的狀態,直接讓顯示的元素隱藏起來,隱藏的元素顯示出來。參數使用方法和show,hide相同

18、slideDown,slideUp可以實現向下或向上卷動的效果,實際上是通過指定時間內自發元素的高度來實現動畫效果。需要注意的是這兩個方法參數為空的情況和show,hide不同

19、slideToggle和toggle達到的效果類似

20、DOCTYPE對於jQuery中的動畫是有影響的。沒有DOCTYPE定義時,在IE中,JQuery的動畫會出現閃爍的糟糕效果

21、float的值是left,可以使原來各自位於一行的元素全部在一行中向左浮動。

22、可以給多個選擇器定義同樣的樣式,選擇器之間用,分割。同樣對於JQuery的$方法,也可以傳入多個選擇器

HTML代碼:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>菜單</title>
        <link href="css/style.css" rel="stylesheet" />
        <script src="js/jquery-2.1.4.min.js"></script>
    </head>
    <body>
        <ul>
            <li class="menu">
                <a href="#">菜單有一</a>
                <ul>
                    <li><a href="#">子菜單一</a></li>
                    <li><a href="#">子菜單一</a></li>
                </ul>
            </li>
            <li class="menu">
                <a href="#">菜單有二</a>
                <ul>
                    <li><a href="#">子菜單一</a></li>
                    <li><a href="#">子菜單一</a></li>
                </ul>
            </li>
            <li class="menu">
                <a href="#">菜單有三</a>
                <ul>
                    <li><a href="#">子菜單一</a></li>
                    <li><a href="#">子菜單一</a></li>
                </ul>
            </li>
        </ul>

        <ul class="list">
            <li class="hmenu">
                <a href="#">菜單一</a>
                <ul>
                    <li>
                        <a href="#">子菜單一</a>
                        <a href="#">子菜單二</a>
                    </li>
                </ul>
            </li>
            <li class="hmenu">
                <a href="#">菜單二</a>
                <ul>
                    <li>
                        <a href="#">子菜單一</a>
                        <a href="#">子菜單二</a>
                    </li>
                </ul>
            </li>
            <li class="hmenu">
                <a href="#">菜單三</a>
                <ul>
                    <li>
                        <a href="#">子菜單一</a>
                        <a href="#">子菜單二</a>
                    </li>
                </ul>
            </li>
        </ul>
    </body>
</html>

css代碼:

@charset "utf-8";
ul{padding:0;margin:0;/*清除子菜單中的縮進*/}
ul,li{list-style:none;/*清除ul、li上默認的小圓點*/}
a{text-decoration: none;}
li{background: #eeeeee;/*backgroun-image會覆蓋background-color*/}
.list{margin-top:20px;} .menu,.hmenu{background:url(../img/timg18.jpg) repeat-x left center;width:130px;line-height: 30px;} .menu a,.hmenu a{ text-decoration: none;/*取消下划線*/ display:block;/*填充整個區域*/ /*以下兩行專門為IE6寫*/ display:inline-block; width:105px; color:#fff; padding-top:3px; padding-bottom:3px; padding-left:25px; background: url(../img/down.png) no-repeat 3px center; } .menu li a,.hmenu li a{background:none;color:#666} .menu ul,.hmenu ul{display:none;/*隱藏子菜單項*/} .hmenu{float:left;margin-left:1px;}

jQuery代碼:

       <script>
            $(document).ready(function (){//檢查頁面是否加載完畢
                $(".menu>a").click(function (){//找到主菜單項對應的子菜單項;如果換成.menulist a會觸發二級菜單中的a的點擊事件
                    var ulNode=$(this).next("ul");
//                  多種隱藏方式 
//                  if(ulNode.css("display")=="none"){
//                      ulNode.css("display","block");
//                  }
//                  else{
//                      ulNode.css("display","none");
//                  }//第一種為css方式;代碼比較繁瑣,jQuery用最少最簡潔的代碼實現功能
//                  show()和hide()
//                  ulNode.show("slow");//括號里的參數可以為數字(單位為毫秒)、slow、fast和normal
//                  ulNode.hide();//參數和show()一樣  這個是隱藏
//                  ulNode.toggle();//參數同上   第三種toggle()
//                  第四種slideDown()和slideUp()
//                  ulNode.slideDown();//自動加有過渡效果,參數同上
//                  ulNode.slideUp();
                    ulNode.slideToggle();//自動判斷是展開還是隱藏     第五種slideToggle()
                    changeIcon($(this));
                });
//              $(".menu>a").mouseover(function (){
//                  var ulNode=$(this).next("ul");
//                  if(ulNode.css("display")=="none"){
//                      ulNode.css("display","block");
//                  }
//                  else{
//                      ulNode.css("display","none");
//                  }
//              });  //鼠標划入
//              $(".menu>a").mouseout(function (){
//                  var ulNode=$(this).next("ul");
//                  if(ulNode.css("display")=="block"){
//                      ulNode.css("display","none");
//                  }
//              });  //鼠標划出

                $(".hmenu").hover(function (){
                    $(this).children("ul").slideDown();
                    changeIcon($(this).children("a"));
                },function (){
                    $(this).children("ul").slideUp();
                    changeIcon($(this).children("a"));
                });


                //修改指示圖標
                function changeIcon(mainNode){
                    if(mainNode){
                        if(mainNode.css("background").indexOf("down.png")>=0){
                            mainNode.css("background","url(img/up.png) no-repeat 3px center");
                        }
                        else{
                            mainNode.css("background","url(img/down.png) no-repeat 3px center");
                        }
                    }
                }
            });
        </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM