fullPage.jsは、フルスクリーンでコンテンツを表示し、画面ごとにスクロールさせることができるjQueryプラグインです。
どういったページが実装できるのかについては、デモを見てもらうのが一番わかりやすいと思います。以下公式サイトより挙動をご確認ください。
fullPage.jsの使い方
ステップ1. ファイルのダウンロードと設定
まずはGitHubからファイル一式をダウンロードします。以下のファイルをサーバーにアップロードしましょう。
- dist/fullpage.min.css
- dist/fullpage.min.js
- vendors/easings.min.js
- vendors/scrolloverflow.min.js
後述しますが、easings.min.jsとscrolloverflow.min.jsは、オプションを変更しないのであれば必要ありません。easings.min.jsはCSS3のeasingを使わない場合に必要で、scrolloverflow.min.jsはscrollOverflowを有効にした場合に必要なファイルです。
ファイルをアップしたら、jQuery本体とそれぞれのファイルを読み込みます。
<link rel="stylesheet" href="css/fullpage.min.css"> <script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="js/easings.min.js"></script> <script src="js/scrolloverflow.min.js"></script> <script src="js/fullpage.min.js"></script>
上記を<head>~</head>内に記述します。スクリプトは</body>の直前でもOKです。
ファイルをCDNから呼び出したい時は、こちらからアドレスをコピーして読み込みます。
ステップ2. HTMLのマークアップ
HTMLは以下のように#fullpageで全体を内包し、各スクリーンを.sectionでセクション分けします。
<div id="fullpage"> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> </div>
横スライドするセクションを実装したい場合は、.sectionの中に.slideを入れるだけです。
<div class="section"> <div class="slide"> Slide 1 </div> <div class="slide"> Slide 2 </div> <div class="slide"> Slide 3 </div> <div class="slide"> Slide 4 </div> </div>
ステップ3. fullPage.jsの実行
最後に、fullPage.jsを実行します。
<script> $(function(){ $('#fullpage').fullpage(); }); </script>
最低限必要なのはここまでです。
fullPage.jsのオプション
fullPage.jsには、豊富なオプションが用意されています。オプションを指定する場合は、以下のように指定してあげます。
<script> $(function(){ $('#fullpage').fullpage({ //Navigation menu: '#menu', //メニューのID lockAnchors: false, //メニューのアンカー有効化 anchors:['firstPage', 'secondPage'], //メニューのアンカー先 navigation: false, //スクロール位置のナビゲーション navigationPosition: 'right', //スクロールナビゲーションの位置 navigationTooltips: ['firstSlide', 'secondSlide'], //スクロールナビゲーションのツールチップ showActiveTooltip: false, //スクロールナビゲーションのツールチップ表示有無 slidesNavigation: false, //スライドのナビゲーション表示 slidesNavPosition: 'bottom', //スライドナビゲーションの位置 //Scrolling css3: true, //CSS3のeasingを使用。falseでJavaScript使用 scrollingSpeed: 700, //スクロールのスピード autoScrolling: true, //スクロールした際に自動で次の要素を表示 fitToSection: true, //要素を自動で画面に合わせて調整 fitToSectionDelay: 1000, //自動で画面に合わせる際のスピード scrollBar: false, //ブラウザのスクロールバーの表示 easing: 'easeInOutCubic', //スクロールアニメーションの種類 easingcss3: 'ease', //CSS3を使ったスクロールアニメーションの種類 loopBottom: false, //一番下のコンテンツより下にスクロールしたら最初にループ loopTop: false, //一番上のコンテンツより上にスクロールしたら最後にループ loopHorizontal: true, //スライドのループ continuousVertical: false, //一番上もしくは一番下のコンテンツからさらにスクロールするとループ。loopBottom・loopTopとの併用不可 continuousHorizontal: false, //スライドのループ scrollHorizontally: false, //水平スクロール interlockedSlides: false, dragAndMove: false, //ドラッグによる移動 offsetSections: false, resetSliders: false, fadingEffect: false, //フェードエフェクト normalScrollElements: '#element1, .element2', //自動スクロールを無効化したい要素 scrollOverflow: false, //コンテンツが画面より大きい時にスクロールして表示 scrollOverflowReset: false, scrollOverflowOptions: null, touchSensitivity: 15, //タッチデバイスでのスワイプ感度 normalScrollElementTouchThreshold: 5, bigSectionsDestination: null, //Accessibility keyboardScrolling: true, //キーボードによるスクロールの操作 animateAnchor: true, //ページ内リンクのアニメーション有無 recordHistory: true, //スクロールの履歴をブラウザに記録 //Design controlArrows: true, //スライドの矢印表示 verticalCentered: true, //天地中央 sectionsColor : ['#ccc', '#fff'], //各セクションの背景色 paddingTop: '3em', //上部の余白 paddingBottom: '10px', //下部の余白 fixedElements: '#header, .footer', //固定表示する要素 responsiveWidth: 0, //通常のスクロールに変化するデバイスの横幅 responsiveHeight: 0, //通常のスクロールに変化するデバイスの高さ responsiveSlides: false, parallax: false, //パララックス効果 parallaxOptions: {type: 'reveal', percentage: 62, property: 'translate'}, //パララックス効果のオプション //Custom selectors sectionSelector: '.section', //セクションのクラス名 slideSelector: '.slide', //スライドのクラス名 lazyLoading: true, //遅延ロード //events onLeave: function(origin, destination, direction){}, //スクロール開始時に呼び出される関数 afterLoad: function(origin, destination, direction){}, //スクロール完了時に呼び出される関数 afterRender: function(){}, //ぺージ読み込み時に呼び出される関数 afterResize: function(){width, height}, //ウインドウサイズのリサイズ時に呼び出される関数 afterResponsive: function(isResponsive){}, //responsiveWidth・responsiveHeightの条件を満たした時に呼び出される関数 afterSlideLoad: function(section, origin, destination, direction){}, //スライド開始時に呼び出される関数 onSlideLeave: function(section, origin, destination, direction){} //スライド完了時に呼び出される関数 }); }); </script>
上記オプションで指定されている値は初期値です。
あとがき
セクションごとにスクロールする効果を実装したい時は、サクッと作れて便利ですね。オプションも豊富で様々なデザインや効果に対応できそうです。
とはいえ、この手のサイトは最近ではあまり見かけなくなってきましたね(^^; もしfullPage.jsを導入する案件が出てきた際には、ぜひ参考にしていただければと思います。