スムーズにページ内を移動する
スムーススクロール
シングルページの基盤となるを学習します。まずは、サンプルをご覧ください。
【サンプル】
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;
}