這篇文章主要介紹了關於jQuery實現切換頁面過渡動畫效果,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
這是一款效果非常酷的jQuery和CSS3透過AJAX呼叫切換頁面過渡動畫特效插件。該頁面切換特效使用AJAX來動態載入連結內容,在頁面載入的時候,使用CSS3來製作非常酷的頁面過渡動畫效果。外掛程式中使用pushState方法來管理瀏覽器的瀏覽歷史,需要的朋友可以參考下
直接為大家介紹製作過程,希望大家可以喜歡。
HTML結構
該頁面切換特效的HTML結構使用一個
<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。.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()方法將會被執行。
$('main').on('click', '[data-type="page-transition"]', function(event){ event.preventDefault(); //detect which page has been selected var newPage = $(this).attr('href'); //if the page is not animating - trigger animation if( !isAnimating ) changePage(newPage, true); });
這個方法會觸發頁面切換動畫,並透過loadNewContent()方法載入新內容。
function changePage(url, bool) { isAnimating = true; // trigger page animation $('body').addClass('page-is-changing'); //... loadNewContent(url, bool); //... }
當新的內容載入後,會取代原來
function loadNewContent(url, bool) { var newSectionName = 'cd-'+url.replace('.html', ''), section = $('<p class="cd-main-content '+newSectionName+'"></p>'); section.load(url+' .cd-main-content > *', function(event){ // load new content and replace <main> content with the new one $('main').html(section); //... $('body').removeClass('page-is-changing'); //... if(url != window.location){ //add the new page to the window.history window.history.pushState({path: url},'',url); } }); }
為了在使用者點擊瀏覽器的回退按鈕時觸發相同的頁面切換動畫效果,插件中監聽popstate事件,並在它觸發時執行changePage()函數。
$(window).on('popstate', function() { var newPageArray = location.pathname.split('/'), //this is the url of the page to be loaded newPage = newPageArray[newPageArray.length - 1]; if( !isAnimating ) changePage(newPage); });
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
jQuery和CSS3實作仿花瓣網固定頂部位置帶懸浮效果的導航選單
以上是jQuery實作切換頁面過渡動畫效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!