利用JavaScript實現頁面導航層級指示效果?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
我們上網經??吹揭恍╉撁鎸蛹壷甘镜男Ч?,比如淘寶、京東、百度百科等,用于指示用戶瀏覽頁面到哪里了??梢云鸬胶芎玫慕换バЧ?,現在我們就來自己去實現以下類似的效果。主要用到的API是scrollIntoView 和 getBoundingClientRect方法,原理是監聽頁面滾動元素,當元素距離到瀏覽器視口一定的位置的時候就證明元素開始出現在頁面的視口,就可以標識右邊的指示欄。
代碼如下:
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>H5 canvas繪制框選截圖和保存截圖代碼</title> <style> *{padding:0;margin:0;} #scrollBox{margin:0 auto;width:1000px;} #scrollBox .scroll-tips{position:fixed;right:10px;top:300px;width:100px;} #scrollBox .scroll-tips li {cursor:pointer;text-align:center;} #scrollBox .scroll-tips li.active {background:#ccc;} #scrollBox .ct {height: 550px;line-height:550px;text-align:center;font-size:40px;color:#fff;background:green;} </style> </head> <body> <div id="scrollBox"> <div class="main"> <div class="content"> <h3 id="title1" class="title-bar" data-id="1">標題1</h3> <div class="ct">內容1</div> </div> <div class="content"> <h3 id="title2" class="title-bar" data-id="2">標題2</h3> <div class="ct" >內容2</div> </div> <div class="content"> <h3 id="title3" class="title-bar" data-id="3">標題3</h3> <div class="ct" >內容3</div> </div> <div class="content"> <h3 id="title4" class="title-bar" data-id="4">標題4</h3> <div class="ct" >內容4</div> </div> <div class="content"> <h3 id="title5" class="title-bar" data-id="5">標題5</h3> <div class="ct" >內容5</div> </div> <div class="content"> <h3 id="title6" class="title-bar" data-id="6">標題6</h3> <div class="ct" >內容6</div> </div> </div> <div class="scroll-tips"> <ul> <li id="Li1" class="active" data-id="1">標題1</li> <li id="Li2" data-id="2">標題2</li> <li id="Li3" data-id="3">標題3</li> <li id="Li4" data-id="4">標題4</li> <li id="Li5" data-id="5">標題5</li> <li id="Li6" data-id="6">標題6</li> </ul> </div> </div> <script> let Li = $$('.scroll-tips li'); let scrollTips = $$('.title-bar'); function $$(str) { return document.querySelectorAll(str); }; for (let i = 0, len = Li.length; i < len; i++) { // 點擊右側標識點左側滾動到窗口顯示位置 Li[i].onclick = function () { let id = this.getAttribute('data-id'); $$('.scroll-tips li.active')[0].classList.remove('active'); this.classList.add('active'); $$('#title' + id)[0].scrollIntoView(); }; }; // 獲取當前頁面滾動到瀏覽器視口頂部位置的元素 const getScrollTop = function (domArr) { for (let i = 0, len = domArr.length; i < len; i++) { let top = domArr[i].getBoundingClientRect().top; // 表示在一定范圍內允許的值 if (top >= 0 && top <= 30) { return domArr[i]; } } }; // 監聽滾動方法 window.onscroll = function () { let LiId = getScrollTop(scrollTips) && getScrollTop(scrollTips).getAttribute('data-id'); if (LiId) { $$('.scroll-tips li.active')[0].classList.remove('active'); $$('#Li' + LiId)[0].classList.add('active'); } }; </script> </body> </html>
運行結果如下:
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。