[原創作品]web網頁中的錨點


  因為近來在從事web前端開發的工作,所以寫的文章也都是關於web這一塊。以后將分享算法和web高級編程的內容,很多公司的web前端不夠重視,以為是很low-level,給的待遇也很一般,其實,這都是很狹隘的理解。軟件開發是一種很謹慎的工作,每一個環節都需要足夠的重視。好了,不扯淡。需要扯淡的,點擊左邊信息欄加群按鈕。

 

  今天分享的內容是網頁錨點效果,就是在網頁滾動到某個位置時,菜單有相應的變化。如圖,

 

 

就是在滾動時,菜單會有相應的選中效果,點擊菜單時,定位到網頁內容。

 

菜單代碼:

1         <ul class="menu">
2             <li><a href="#about-us">關於我們</a></li>
3             <li><a href="#dynamic">動態</a></li>
4             <li><a href="#case">案例</a></li>
5             <li><a href="#service">服務</a></li>
6             <li class="select"><a href="#index">首頁</a></li>
7         </ul>

錨點的話就是在網頁相應的位置加上id屬性,這里是在section標簽加的id,就行。重點看js代碼:

 

 1    $(window).scroll(function () {
 2 
 3             $('section[id]').each(function(){
 4                 var id = $(this).attr('id');
 5                 var offsetTop = document.getElementById(id).getBoundingClientRect().top;
 6                 var offsetBtm = document.getElementById(id).getBoundingClientRect().bottom;
 7 
 8                 if(offsetTop < 0 && offsetBtm > 0) {
 9                     $('.menu li a[href]').parent().removeClass('select');
10                     $('.menu li a[href=#'+id+']').parent().addClass('select');
11                 }
12             });
13 
14         });

 

  上面代碼中getBoundingClientRect()的作用的將選取的dom元素作為矩形,其相對的位置是瀏覽器窗口的大小。.top是dom元素上邊距距離瀏覽器窗口上邊的距離,.bottom是dom元素下邊距距離窗口上邊距的距離。說白了,就是以瀏覽器左邊,上邊為基准。還有.left, .right,這個,博友應該明白什么意思了。當上邊距小於等於0,且下邊距大於0說明該元素在當前瀏覽器視圖中。改變菜單的選中狀態。

  因為a標簽在li里面,而選中狀態在li class="select",所以點擊時應該這樣寫,

 

1   $('.menu li').click(function(){
2             window.location = $(this).find('a').attr('href');
3             $(this).siblings().removeClass('select');
4             $(this).addClass('select');
5         });

 

就是加上window.location,讓頁面跳轉到相應的元素。

好了,這部分不是難點,不做多余解釋。原創作品,轉載請注明出處:http://zhutty.cnblogs.com

 


免責聲明!

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



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