拖動滾動條實現側欄導航定位效果
大家可能看到過這樣的導航效果,那就是拖動滾動條的時候,能夠實現側欄導航定位效果。
也就是說沒到滾動條移動到一個欄目位置,那麼側欄導航也能夠實現定位,下面就通過程式碼例項詳細介紹一下如何實現此功能,需要的朋友可以做一下參考,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { padding: 0; margin: 0; list-style: none; } body, html { background-color: #f6f6f6; } div { height: 600px; line-height: 500px; border: solid 1px #ccc; background-color: #fff; text-align: center; } ul { position: fixed; height: 40px; line-height: 40px; top: 100px; } li { width: 50px; height: 50px; text-align: center; line-height: 50px; border: solid 1px #ccc; } li:hover { background-color: #ccc; color: #fff; } li.active { background-color: #cc5; color: #fff; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $(function () { $('li').on('click', function () { var index = $(this).index(); var scrollTo = $('.content').eq(index).offset().top; $('body').animate({ scrollTop: scrollTo }, 200); $(this).addClass('active').siblings().removeClass('active'); }) var barItemTops = []; $('li').each(function (index, element) { barItemTops.push($(this).position().top + 100); }) console.log(barItemTops) $(window).on('scroll', function () { var winScrollTop = $(this).scrollTop(); $('.content').each(function (index, element) { var selfOffsetTop = $(this).offset().top; if (0 <= selfOffsetTop - winScrollTop && selfOffsetTop - winScrollTop < barItemTops[index]) { $('li').eq(index).addClass('active').siblings().removeClass('active'); } }) }) }) </script> </head> <body> <ul class="nav"> <li class="active">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <div class="content div1">螞蟻部落一</div> <div class="content div2">螞蟻部落二</div> <div class="content div3">螞蟻部落三</div> <div class="content div4">螞蟻部落四</div> <div class="content div5">螞蟻部落五</div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).左側導航條固定效果是由如下程式碼實現的:
[CSS] 純文字檢視 複製程式碼ul { position: fixed; height: 40px; line-height: 40px; top: 100px; }
top值等於100px要特別注意一下,因為後面會用到。
(2).滑鼠懸浮導航欄目實現變色效果是由如下程式碼實現的:
[CSS] 純文字檢視 複製程式碼ul { position: fixed; height: 40px; line-height: 40px; top: 100px; }
(3).$(function () {}),當文件結構完全載入完畢再去執行函式中的程式碼。
(4).$('li').on('click', function () {}),為li元素註冊時間處理函式,當點選li元素的時候也能夠實現導航效果。
(5).var index = $(this).index(),獲取當前點選li元素的索引值。
(6).var scrollTo = $('.content').eq(index).offset().top,獲取對應索引的div元素距離文件頂端的距離。
(7).$('body').animate({ scrollTop: scrollTo
}, 200),以動畫方式設定body的scrollTop值,這樣就會使對應索引的div塊頂端到達視窗頂端。
(8).$(this).addClass('active').siblings().removeClass('active'),為當前元素新增名稱為active的樣式類,其他的li元素則刪除它,於是就實現了當前li元素呈現綠色的效果。
(9).var barItemTops = [],宣告一個陣列,後面會用到。
(10).$('li').each(function (index, element) {
barItemTops.push($(this).position().top + 100);
}),獲取每一個li元素的position().top值,再加上100,恰好是每一個li元素頂端,距離視窗頂端的尺寸。
(11).$(window).on('scroll', function () {}),為window註冊scroll事件處理函式。
(12).var winScrollTop = $(this).scrollTop(),網頁向上滾動的尺寸。
(13).$('.content').each(function (index, element) {}),遍歷每一個div元素。
(14).var selfOffsetTop = $(this).offset().top,獲取div元素距離文件頂部的距離。
(15).if (0 <= selfOffsetTop - winScrollTop && selfOffsetTop - winScrollTop < barItemTops[index]) {
$('li').eq(index).addClass('active').siblings().removeClass('active');
},selfOffsetTop - winScrollTop值就是div元素的頂端距離視窗頂端的尺寸。
也就是如果這個尺寸大0並且小於側邊欄導航對應的li元素頂端距離視窗頂端的距離,那麼將設定對應li元素的相關樣式。
相關文章
- 側欄懸浮導航選單拖動滾動條可以自動定位效果
- 側欄導航自動定位效果詳解
- 實現隨著滾動條滾動,導航會自動切換的效果
- 拖動滾動條實現內容自動載入效果
- 商城側欄導航效果實現詳解
- 拖動滾動條一定距離可以固定於頂部的導航欄
- 拖動滾動條實現div跟隨效果程式碼例項
- 如何讓 fixed 定位的導航條可橫向滾動?
- Delphi中TFlowPanel實現滾動條效果
- Vue.js+cube-ui(Scroll元件)實現類似頭條效果的橫向滾動導航條Vue.jsUI元件
- 線上直播原始碼,JS動態效果之,側邊欄滾動固定效果原始碼JS
- 僅2步實現 拜拜 漢堡導航欄效果~ 全新底部導航互動(滑動隱藏)
- 滾動cell 顯示隱藏導航欄
- js實現的模擬滾動條效果JS
- Bootstrap 4 實現導航欄右側對齊boot
- Ubuntu 20.04 自動隱藏左側導航欄Ubuntu
- 隱藏滾動條保留滾動效果
- JavaScript 滾動條定位指定位置JavaScript
- 移動端觸屏拖動頁面滾動效果
- JS如何實現導航欄的智慧浮動JS
- 直播軟體app開發,導航條根據位置移動實現定位、顏色過渡動畫效果APP動畫
- 拖動滾動條實現網頁內容自動載入程式碼例項網頁
- 實現左側導航和橫向導航
- 按鈕滾動條效果
- javascript實現動態側邊欄JavaScript
- iOS:導航條滾動透明度隨著tableView的滾動而變化iOSView
- 【前端】javascript實現導航欄筋斗雲效果特效前端JavaScript特效
- 側欄能夠定位的導航選單程式碼例項
- 在 Flutter 中實現一個浮動導航欄Flutter
- css3實現動態圓形導航欄CSSS3
- 前端實現文字滾動效果前端
- 元素滾動到指定位置以後可以實現固定效果
- 谷歌最新定位導航 將實現全自動駕駛?谷歌自動駕駛
- javascript模擬實現滾動條效果程式碼例項JavaScript
- CSS實現的側欄三級導航選單程式碼CSS
- Tablayout實現導航欄TabLayout
- css實現視差滾動效果CSS
- 表格拖動滾動條標題固定程式碼例項