首頁 > web前端 > js教程 > 主體

jQuery 實現側邊浮動導航選單效果_jquery

WBOY
發布: 2016-05-16 16:24:19
原創
1759 人瀏覽過

單頁網頁內容較多,頁面長度較大,需要方便快速的在頁面的不同位置進行定位,所以浮動菜單逐漸流行了起來,如下圖 男裝、女裝、美妝等。

這種選單功能分為兩部分:

1、點選選單項,網頁捲動至對應位置,可簡單透過錨點實現;

2、滾動頁面的時候,選單項目的選取狀態要跟著改變,這就需要監聽網頁的滾動事件並透過一點計算來實現了;

計算 scrollTop 和 各個 div 的 offsetTop 的大小關係,判斷現在網頁顯示的位置在什麼地方,再根據計算的結果為對應的選單項目新增樣式。例如第二個div 的offset().top = 300, 第三個div 的offset().top = 600,此時的scrollTop = 400,說明現在顯示的大部分是第二個div 的位置,700 則是第三個div。下面是一個簡單的例子:

複製程式碼 程式碼如下:



   

網購

   


       

1F 男裝


       

               

  •            
           

   

   

複製程式碼 程式碼如下:

     * {邊距:0;填滿:0;}
        正文 {字體大小:12px;行高:1.7;}
        li {列表樣式:無;}
        #content {寬度:800px;邊距:0 auto;填入:20px;}
        #content h1 {顏色:#0088bb;}
        #content .item {padding: 20px;margin-bottom: 20px;border: 1px dotted #0088bb;}
        #content .item h2 {字體大小:16px;字體粗細:粗體;邊框底部:2px實心#0088bb;邊距底部:10px;}
        #content .item li {display: inline;margin-right: 10px;}
        #content .item li a img {寬度:230px;高度:230px;邊框:無;}
        #menu{位置:固定;左:50%;左邊緣:400px;上:100px;}
        #menu ul li a {
            顯示:塊狀;
            邊距:5px 0;
            字體大小:14px;
            字體粗細:粗體;
            顏色:#333;
            寬度:80px;
            高度:50px;
            行高:50px;
            文字裝飾:無;
            文字對齊:置中;
        }
        #menu ul li a:hover,#menu ul li a.current {顏色: #fff;背景: #0088bb;} 

複製程式碼程式碼如下:

    $(function(){
           $(window).scroll(function(){
               var scrollTop = $(document).scrollTop();
               var contentItems = $("#content").find(".item");
               var currentItem = "";
               contentItems.each(function(){
                   var contentItem = $(this);
                   var offsetTop = contentItem.offset().top;
if(scrollTop > offsetTop-200){//此處的200視具體情況自行設定,因為如果不減去一個數值,在剛好滾動到一個div的邊緣時,選單的選取狀態會出錯,例如,頁面剛好捲動到第一個div的底部的時候,頁面已經顯示出第二個div,而選單中還是第一個選項處於選取狀態
                       currentItem = "#" contentItem.attr("id");
                   }                  
               });
               if(currentItem&¤tItem!=$("#menu").find(".current").attr("href")){
                   $("#menu").find(".current").removeClass("current");
                   $("#menu").find("[href=" currentItem "]").addClass("current");
               }
           });
       });
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板