スムーズにページ内を移動する
スムーススクロール
シングルページの基盤となるを学習します。まずは、サンプルをご覧ください。
【サンプル】
http://cocohp.com/sample/scroll/001/
See the Pen
smoothed scroll by nakatax (@cocohp)
on CodePen.
比較的に縦長のページ構成の場合、同ページ内での上下移動が頻繁に行われます。そのため、上下への移動がスムーズに行えるように配慮します。ユーザーが購読し、ある程度の高さのところにくると、右下にページトップへの矢印が出現します。
【手順】
1.jQueryのCDNを読み込みます。※jQueryの基本
2.今回は、三角の矢印に、font-awesomeを採用しますので、下記のCDNを追記します。
これで、jQueryとfont-awesomeが利用できる基本準備が整いました。
3.scroll.jsを作成し、外部読み込みにします。
今回は、2つのアクションを搭載しています。#で始まるすべての動作が、swingする動きを実装します。それに加え、.pagetopというクラスセレクタを用意し、CSSにて非表示にしておきます。(display:none)スクロールが100以上になった時点で、フェイドインアウトをする動作と連携させます。
// scroll.jsの内容 $(function(){ // #で始まるリンクをクリックしたら実行 $('a[href^="#"]').click(function() { // スクロールの速度 var speed = 400; // ミリ秒で記述 var href= $(this).attr("href"); var target = $(href == "#" || href == "" ? 'html' : href); var position = target.offset().top; $('body,html').animate({scrollTop:position}, speed, 'swing'); return false; }); }); $(function(){ var pagetop = $('.pagetop'); $(window).scroll(function () { if ($(this).scrollTop() > 100) { pagetop.fadeIn(); } else { pagetop.fadeOut(); } }); pagetop.click(function () { $('body, html').animate({ scrollTop: 0 }, 700); return false; }); });
CDN
CDNも用意されています。
【追記2020】
scroll-behavior
scroll-behavior は、スクロールの振る舞いを設定します。2016年にW3Cのにワーキングドラフトされました。スムーススクロールの動きを実現します。
html{ scroll-behavior: smooth; }

