jQueryでページ遷移アニメーション効果の切り替えを実装

不言
リリース: 2018-06-28 14:21:59
オリジナル
4719 人が閲覧しました

この記事では主に、ページ切り替えのトランジションアニメーション効果を実現するための jQuery を紹介します。これは、必要な友達に参照してもらえるように共有します。これは、AJAX スイッチを介した非常にクールな jQuery と CSS3 の呼び出しです。ページ遷移アニメーション特殊効果プラグイン。このページ切り替えエフェクトは、AJAX を使用してリンク コンテンツを動的に読み込みます。ページが読み込まれるときに、CSS3 を使用して非常にクールなページ遷移アニメーション効果が作成されます。 PushState メソッドは、ブラウザの閲覧履歴を管理するためにプラグインで使用されます。必要な友達はそれを参照してください

制作プロセスを直接紹介します。

HTML構造

このページ切り替え特殊効果のHTML構造は、ページのラッピング要素として

要素を使用し、ページ切り替え時のマスクレイヤーの作成にp.cd-cover-layerを使用します。 , p.cd -loading-barはajaxをロードする際のロードプログレスバーです。


<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 擬似要素を使用して、ページ切り替えプロセス中にページ コンテンツをカバーする 2 つのマスク レイヤーを作成します。それらの位置は固定されており、高さは 50vh に等しく、幅は 100% です。デフォルトでは、CSS 変換プロパティ (translateY(-100%)/translateY(100%)) を使用して非表示になります。ユーザーがページを切り替えると、これらの要素は (.page-is-changing クラスを 要素に追加することによって) ビューポートに戻されます。

下の図はこのプロセスを示しています:


ページ切り替えの特殊効果


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 クラスで追加されるときに透明度を 0 から 1 に変更します。

読み込み進行状況バーは、.cd-loading-bar::before 疑似要素を使用して作成されます。デフォルトでは、縮小 (scaleX(0)) され、transform-origin: 左中央になります。ページの切り替えが開始されると、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 トランジションを使用して実現されます。異なる要素のアニメーション シーケンスを実現するために、アニメーション化された各要素に異なる遷移遅延が追加されます。

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 クラスが本文から削除され、新しくロードされたコンテンツが 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 中国語 Web サイトをご覧ください。

関連する推奨事項:

jQuery と CSS3 は、フローティング効果を備えた模造花びらネットの固定上部位置ナビゲーション メニューを実装します


jQuery スライド ボタン スイッチを実装する方法


jQuery プラグインについて タイムライン効果を実装する Timelinr


以上がjQueryでページ遷移アニメーション効果の切り替えを実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート