本堂課主要是延續上一篇jQuery學習筆記 第八堂-2,這次加入了「回到頁頂」的按鈕效果,點這裡看結果。
關於如何回到網頁頂端的按鈕製作方式,其實在之前的網誌中已經介紹過了( 在網頁(blogger)中加入回到網頁頂端的浮動按鈕),這裡再做一個比較清楚的說明。
STEP 1建立「向上」的按鈕樣式
建立「向上」按鈕樣式的方法很多,這裡我打算直接使用Font Awesome所提供的圖案(關於Font Awesome的使用可以參考這篇:如何使用Font Awesome所提供的各種icon)。
首先,在<head></head>中間插入匯入FontAwesome的語法
接著,在網頁的最下方,我新增一個class為「gotop」的區塊,裡面就嵌入Font Awesome的圖片
這時候,網頁的最左下方就會出現一個向上的圖案了(第一次使用Font Awesome的時候,可能會需要花一些時間,才會讀取到該圖片)
接著,我就來幫這個向上的按鈕,透過CSS的方式,改變成我想要的顏色,並且放到我想要的位置,這裡用position: fixed是因為我們希望該圖片會一直固定在瀏覽器的右下角,cursor:pointer,則是當網友把滑鼠移到這個圖片的時候,它會呈現出像是「手指」可以點擊這樣的符號。
最後按鍵的結果就會固定在瀏覽器的右下角。
撰寫回到頁頂的jQuery語法
語法很簡單,告訴它,當這個按鈕被點擊的時候,幫我回到網頁頂端
比較需要留意的是這裡有一個n=1的指令,之所以要有這個指令,是因為在我們前一堂課中所使用的mousewheel功能,如果網友已經看到最後一頁,按回到頁頂的按鈕,這時候畫面會跳到第一頁,但是如果沒有更新讓n=1,這時候網友如果滾動滑鼠的話,會直接跳到最後一頁。
當網友離開第一頁後才產生gotop按鈕
最後一步,我們希望當網友離開第一頁,到達第二頁後,gotop按鈕才顯示出來,寫法像這樣子:
這裡比較要注意的地方是,最上面有一行$(".gotop").fadeOut(0),這個的用意是在一開始進入網頁的時候,不要出現gotop按鈕,fadeOut裡面的0是duration,設成0是因為一進來就不要看到。
if的指令裡面用>=$(".p02").offset().top,意思是如果現在捲軸的位置大於等於第二頁的話,在出現(fadeIn),否則不要出現(fadeOut),在一般的情況下,我們也可以設成「if($(window).scrollTop()>0)」就可以了。
寫到這就完成這個回到頁頂的按鈕了!
看一下我們的程式碼:
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>單頁輪撥式網站設計</title> <!-- 匯入FontAwesome --> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> <!-- 匯入jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="jquery.mousewheel.min.js"></script> <script> $(document).ready(function(){ var num_li=$("li").length//偵測我們有幾個標點(圖片) //滾動滑鼠滾輪時,移動到上一頁、下一頁的效果 n=1 moving=0 $(window).mousewheel(function(e){ $("html,body").stop() if(moving==0){ moving=1 if(e.deltaY==-1){ if(n<num_li){ n++ } }else{ if(n>1){ n-- } } } $("html,body").animate({"scrollTop":$(".p0"+n).offset().top},function(){moving=0}) }) //根據捲軸的位置改變右方導覽列游標的顏色 $(window).scroll(function(){ if($(window).scrollTop()>=$(".p01").offset().top && $(window).scrollTop()<$(".p02").offset().top){ $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 $(".nav li:eq(0)").css("background-color","#46dd46") }else if($(window).scrollTop()>=$(".p02").offset().top && $(window).scrollTop()<$(".p03").offset().top){ $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 $(".nav li:eq(1)").css("background-color","#46dd46") }else if($(window).scrollTop()>=$(".p03").offset().top && $(window).scrollTop()<$(".p04").offset().top){ $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 $(".nav li:eq(2)").css("background-color","#46dd46") }else if($(window).scrollTop()>=$(".p04").offset().top && $(window).scrollTop()<$(".p05").offset().top){ $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 $(".nav li:eq(3)").css("background-color","#46dd46") }else if($(window).scrollTop()>=$(".p05").offset().top){ $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 $(".nav li:eq(4)").css("background-color","#46dd46") } }) //點選右方導覽列時會到指定圖片 for(i=0;i<=num_li;i++){ $(".nav li:eq("+i+")").click({id:i},function(e){ $("html,body").stop() $(".nav li").css("background-color","white")//除了被點擊到的游標,其他都恢復成原來的顏色 page=e.data.id+1 $("html,body").animate({"scrollTop":$(".p0"+page).offset().top}) $(".nav li:eq("+e.data.id+")").css("background-color","#46dd46")//被點擊到的游標變色,前面的selector用this也可以 n=e.data.id+1 }) } //一進入網頁時,將導覽列垂直置中計算導覽列置中的位置 center() //縮放網頁時,將導覽列垂直置中 $(window).resize(function(){ center() }) //計算導覽列垂直置中的高度 function center(){ pos=$(window).height()/2-$(".nav").height()/2 $(".nav").css("top",pos) } //離開頁頂時才出現gotop按鈕 $(".gotop").fadeOut(0) $(window).scroll(function(){ if($(window).scrollTop()>=$(".p02").offset().top){ $(".gotop").fadeIn() }else{ $(".gotop").fadeOut() } }) //點擊goptop時回到頁頂 $(".gotop").click(function(){ $("html,body").stop() $("html,body").animate({"scrollTop":"0"}) n=1 }) }) </script> <style> *{ padding:0; margin:0; } body{ overflow: hidden; } /* 插入背景圖片 */ .p01{ background-image:url(images/p01.jpg); background-size:cover; background-repeat: no-repeat; height:100vh; } .p02{ background-image:url(images/p02.jpg); background-size:cover; background-repeat: no-repeat; height:100vh; } .p03{ background-image:url(images/p03.jpg); background-size:cover; background-repeat: no-repeat; height:100vh; } .p04{ background-image:url(images/p04.jpg); background-size:cover; background-repeat: no-repeat; height:100vh; } .p05{ background-image:url(images/p05.jpg); background-size:cover; background-repeat: no-repeat; height:100vh; } /* 插入導覽列 */ .nav{ position: fixed; top:50%; right:0px; cursor:pointer; } li{ width:10px; height:10px; margin: 10px; background-color: white; border-radius: 5px; box-shadow: 1px 1px 1px rgba(0,0,0,0.5) inset,-1px -1px 1px rgba(0,0,0,0.5) inset; list-style-type: none; } h1{ font-size:60px; color:ghostwhite; text-shadow:0px 0px 15px black; } .gotop{ color:rgba(226,248,156,0.9); position:fixed; bottom:2vh; right:5vh; cursor:pointer; } </style> </head> <body> <div class="container"> <div class="nav"> <ul> <li style="background-color:#46dd46"></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> <div class="p01"><h1>Page 1</h1></div> <div class="p02"><h1>Page 2</h1></div> <div class="p03"><h1>Page 3</h1></div> <div class="p04"><h1>Page 4</h1></div> <div class="p05"><h1>Page 5</h1></div> </div> <div class="gotop"> <i class="fa fa-arrow-circle-up fa-2x"></i> </div> </body> </html>
點這裡看結果。
0 意見:
張貼留言