首頁 > web前端 > js教程 > jQuery實作切換頁面過渡動畫效果

jQuery實作切換頁面過渡動畫效果

不言
發布: 2018-06-28 14:21:59
原創
4777 人瀏覽過

這篇文章主要介紹了關於jQuery實現切換頁面過渡動畫效果,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

這是一款效果非常酷的jQuery和CSS3透過AJAX呼叫切換頁面過渡動畫特效插件。該頁面切換特效使用AJAX來動態載入連結內容,在頁面載入的時候,使用CSS3來製作非常酷的頁面過渡動畫效果。外掛程式中使用pushState方法來管理瀏覽器的瀏覽歷史,需要的朋友可以參考下

直接為大家介紹製作過程,希望大家可以喜歡。

HTML結構

該頁面切換特效的HTML結構使用一個

元素來作為頁面的包裹元素,p.cd-cover-layer用於製作頁面切換時的遮罩層,p.cd-loading-bar是進行ajax載入時的loading進度條。

<main>
 <p class="cd-index cd-main-content">
  <p>
   <h1>Page Transition</h1>
   <!-- your content here -->
  </p>
 </p>
</main>
 
<p class="cd-cover-layer"></p> <!-- this is the cover layer -->
 
<p class="cd-loading-bar"></p> <!-- this is the loading bar -->
登入後複製

 CSS樣式

該頁面切換特效中使用body::before和body:: after偽元素在頁面切換過程中會建立兩個遮罩層來遮住頁面內容。它們的定位是固定定位,高度等於50vh,寬度為100%。預設情況下,使用CSS transform屬性將它們隱藏起來(translateY(-100%)/translateY(100%))。當使用者切換頁面的時候,這些元素被移動回視口當中(透過在元素上新增.page-is-changing class)。
下面的圖片示範了這個過程:

頁面切換特效

body::after, body::before {
 /* these are the 2 half blocks which cover the content once the animation is triggered */
 height: 50vh;
 width: 100%;
 position: fixed;
 left: 0;
}
body::before {
 top: 0;
 transform: translateY(-100%);
}
body::after {
 bottom: 0;
 transform: translateY(100%);
}
body.page-is-changing::after, body.page-is-changing::before {
 transform: translateY(0);
}
登入後複製

頁面切換時,頁面內容的淡入淡出效果是透過改變p.cd-cover-layer的透明度來實現的。它覆蓋了.cd-main-content元素,並具有相同的背景色,然後在被添加.page-is-changing class的時候,將透明度從0修改為1。
Loading進度條使用.cd-loading-bar::before偽元素來製作。預設它被縮小(scaleX(0))和transform-origin: left center。當頁面切換開始時它被使用scaleX(1)放大會原來的尺寸。

.cd-loading-bar {
 /* this is the loading bar - visible while switching from one page to the following one */
 position: fixed;
 height: 2px;
 width: 90%;
}
.cd-loading-bar::before {
 /* this is the progress bar inside the loading bar */
 position: absolute;
 left: 0;
 top: 0;
 height: 100%;
 width: 100%;
 transform: scaleX(0);
 transform-origin: left center;
}
.page-is-changing .cd-loading-bar::before {
 transform: scaleX(1);
}
登入後複製

特效中平滑的過渡效果使用CSS Transitions來實現。每一個動畫元素都被加入了不同的transition-delay,以實現不同的元素動畫順序。
 JAVASCRIPT

此頁面切換特效中在連結上使用data-type="page-transition"屬性,用於觸發頁面切換事件。當插件偵測到使用者點擊事件,changePage()方法將會被執行。

$(&#39;main&#39;).on(&#39;click&#39;, &#39;[data-type="page-transition"]&#39;, function(event){
  event.preventDefault();
  //detect which page has been selected
  var newPage = $(this).attr(&#39;href&#39;);
  //if the page is not animating - trigger animation
  if( !isAnimating ) changePage(newPage, true);
});
登入後複製

這個方法會觸發頁面切換動畫,並透過loadNewContent()方法載入新內容。

function changePage(url, bool) {
  isAnimating = true;
  // trigger page animation
  $(&#39;body&#39;).addClass(&#39;page-is-changing&#39;);
  //...
  loadNewContent(url, bool);
  //...
}
登入後複製

當新的內容載入後,會取代原來

元素中的內容。 .page-is-changing class被從body中移除,新載入的內容會被加入到window.history(使用pushState()方法)。

function loadNewContent(url, bool) {
  var newSectionName = &#39;cd-&#39;+url.replace(&#39;.html&#39;, &#39;&#39;),
   section = $(&#39;<p class="cd-main-content &#39;+newSectionName+&#39;"></p>&#39;);
    
  section.load(url+&#39; .cd-main-content > *&#39;, function(event){
   // load new content and replace <main> content with the new one
    $(&#39;main&#39;).html(section);
    //...
    $(&#39;body&#39;).removeClass(&#39;page-is-changing&#39;);
    //...
 
    if(url != window.location){
     //add the new page to the window.history
     window.history.pushState({path: url},&#39;&#39;,url);
    }
 });
}
登入後複製

為了在使用者點擊瀏覽器的回退按鈕時觸發相同的頁面切換動畫效果,插件中監聽popstate事件,並在它觸發時執行changePage()函數。

$(window).on(&#39;popstate&#39;, function() {
  var newPageArray = location.pathname.split(&#39;/&#39;),
    //this is the url of the page to be loaded 
    newPage = newPageArray[newPageArray.length - 1];
  if( !isAnimating ) changePage(newPage);
});
登入後複製

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

jQuery和CSS3實作仿花瓣網固定頂部位置帶懸浮效果的導航選單

##jQuery如何實作一個滑動按鈕的開關

關於jQuery外掛程式Timelinr 實作時間軸特效

以上是jQuery實作切換頁面過渡動畫效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板