jQuery點選平滑跳轉到頁面指定位置
大家一定遇到過網頁中可能有這樣的效果,當點選網頁中一個連結時候能夠平滑的定位到網頁的指定位置,當然使用錨點可以實現此功能,但過渡不平滑,下面通過程式碼例項介紹一下如何以動畫方式平滑的實現此功能。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul, li{list-style:none} body{ line-height:1.5; font-size:12px } a:link, a:visited{ color:#0099FF; text-decoration:none } a:hover{text-decoration:underline} .main{ width:980px; margin:0 auto } #menu li{ float:left; width:200px; margin-right:1px; border:1px solid #990000; line-height:20px; font-size:1em; text-align:center } #menu li a{ display:block; width:200px; height:20px; text-decoration:none } #menu a:link, #menu a:visited{ background:#990033; color:#FFFFCC } #menu a:hover, #menu a:active{ background:#FF0000; color:#fff } fieldset{ clear:both; } .box{ height:300px; padding:10px; position:relative } .box span{ position:absolute; left:20px; bottom:10px } .filler{ height:400px; width:1px; background:#ccc; overflow:hidden; clear:both } .vertical{ width:5000px; border:1px solid #ccc; height:80px; padding:10px } </style> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $.fn.anchorGoWhere = function(options){ var obj =this; var defaults = {target:0, timer:1000}; var o = $.extend(defaults,options); obj.each(function(index){ $(obj[index]).click(function(){ var _rel = $(this).attr("href").substr(1); switch(o.target){ case 1: var _targetTop = $("#"+_rel).offset().top; $("html,body").animate({scrollTop:_targetTop},o.timer); break; case 2: var _targetLeft = $("#"+_rel).offset().left; $("html,body").animate({scrollLeft:_targetLeft},o.timer); break; } return false; }); }); }; $(document).ready(function(){ $(".goTop").anchorGoWhere({target:1}); $(".goDown").anchorGoWhere({target:1}); $(".goNext").anchorGoWhere({target:1}); $(".goFront").anchorGoWhere({target:1}); $(".goVertical").anchorGoWhere({target:2}); }); </script> </head> <body id="body"> <div class="main"> <ul id="menu"> <li><a href="#menu1" class="goDown">選單一</a></li> <li><a href="#menu2" class="goDown">選單二</a></li> <li><a href="#menu3" class="goDown">選單三</a></li> <li><a href="#menu4" class="goDown">選單四</a></li> </ul> <div class="filler"></div> <fieldset> <legend id="menu1">選單一的內容</legend> <div class="box"></div> </fieldset> <div class="filler"></div> <fieldset> <legend id="menu2">選單二的內容</a></legend> <div class="box"></div> </fieldset> <div class="filler"></div> <fieldset> <legend id="menu3">選單三的內容</legend> <div class="box"></div> </fieldset> <div class="filler"></div> <fieldset> <legend id="menu4">選單四的內容</a></legend> <div class="box"></div> </fieldset> </div> </body> </html>
點選導航欄選單可以實現網頁內部的平滑定位效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).$.fn.anchorGoWhere=function(options){},為jquery物件例項新增函式,引數options會傳遞一個物件直接量作為引數。
(2).var obj=$(this),宣告一個obj,儲存jquery物件,這裡的this是指向一個jquery物件,不要認為只要是this就是指向dom物件。
(3).var defaults={target:0,timer:1000},定義物件直接量,用來作為預設的一些引數,target:0表示不進行定位,timer:1000表示一秒。
(4).var o=$.extend(defaults,options),使用引數options擴充套件物件defaults,在本例中其實修改第一個引數target。
(5).this.each(function(i){}),遍歷jquery物件中的每一個元素,這裡也就是連結。
(6).$(obj).click(function(){}),為每一個連結註冊click事件處理函式。
(7).var _rel=$(this).attr("href").substr(1),擷取字串,比如"#menu1"就被擷取為"menu1"。
(8).switch(o.target){},一個switch語句。
(9).case 1,如果o.target的值是1。
(10).var _targetTop=$("#"+_rel).offset().top,獲取匹配的legend元素距離文件頂部的距離。
(11).$("html,body").animate({scrollTop:_targetTop},o.timer),使用動畫方式設定滾動條的垂直偏移量,值是_targetTop,這樣就會平滑的定位到匹配元素位置。
(12).return false,取消連結的預設動作,這裡的作用就是取消錨點定位效果。
二.相關閱讀:
(1).$.extend()參閱$.extend()函式用法詳解一章節。
(2).$.fn參閱jQuery.fn 作用是什麼一章節。
(3).each()參閱jQuery each()方法一章節。
(4).attr()參閱jQuery attr()方法一章節。
(5).substr()參閱javascript substr()方法一章節。
(6).offset()參閱jQuery offset()一章節。
(7).switch語句參閱javascript switch語句一章節。
相關文章
- 點選連結跳轉到應用指定頁面
- vue-cli 跳轉到頁面指定位置Vue
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- 頁面內跳轉到相應位置的3種方法
- Flutter頁面保活及保持頁面跳轉位置Flutter
- 直播帶貨原始碼,vue中點選按鈕平滑滾動到頁面某個div位置原始碼Vue
- jQuery點選頁面其他地方隱藏指定元素詳解jQuery
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- RecyclerView平滑到指定位置View
- Android 外部喚起應用跳轉指定頁面Android
- 404頁面自動跳轉到首頁
- 為 FragmentTabhost 新增 tab 點選事件,在頁面跳轉之前Fragment事件
- 重定向到登入頁面後跳轉原頁面
- android短影片開發,uniapp頁面捲軸到指定位置AndroidAPP
- vue頁面跳轉Vue
- Flutter頁面跳轉Flutter
- Android開發:RecyclerView平滑流暢的滑動到指定位置AndroidView
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- 成品直播原始碼,html頁面點選按鈕實現頁面跳轉的兩種方法原始碼HTML
- 卡片跳轉快應用指定頁面,如何點返回直接退出快應用回到卡片
- iOS 點選推送訊息跳轉指定介面 —總結篇iOS
- 短視訊app開發,點選跳轉到另一個頁面時的過場動畫APP動畫
- 短視訊平臺開發,點選連結、圖片自動跳轉到新的頁面
- 直播系統平臺搭建,點選連結跳轉到三方平臺或其他頁面
- 微信公眾號開發之H5頁面跳轉到指定的小程式H5
- Flutter:如何跳轉頁面?Flutter
- JavaScript 頁面跳轉效果JavaScript
- router跳轉page頁面
- 頁面連結跳轉--指定協議,半協議,無協議協議
- Flutter頁面跳轉到IOS原生介面 如何實現?FlutteriOS
- 如何判斷使用者正在操作頁面?當頁面一個小時沒有操作時跳轉到指定頁面如何做?
- JavaScript頁面跳轉程式碼JavaScript
- vscode 跳轉到函式之後怎麼跳轉回之前的位置VSCode函式
- app直播原始碼,RecycleView頁面的點選跳轉設計APP原始碼View
- 2024-05-03 uni跳轉頁面a成功後會立即再跳轉到頁面b,導致無法展現頁面a ==》頁面a業務邏輯沒捋清楚
- 跳轉個人主頁的指定標籤內容
- 選擇select下拉選單網頁跳轉網頁
- 頁面跳轉的幾種方法