Cocoonでページ内リンクをなめらかに移動させる方法【スムーズスクロール設定】

デザインカスタマイズ

ページ内リンクをクリックしたとき、一瞬ではなく『なめらか』に目的の位置まで移動する…
そんな、ぬるぬると動くスムーズスクロールをCocoonでも再現したいと思いませんか?

実は、たった3行のコードを追加するだけで、Cocoonにスムーズスクロールを実装できます。

この記事では、Cocoonにスムーズスクロールを導入する具体的な方法を紹介します。
クリックした瞬間にガクッと飛んでしまう不自然な動きを、自然で心地よい動きに変えてみましょう!

ページ内リンクのスクロールをスムーズ化させる方法

ページ内リンクをなめらかに動かす方法は、以下のコードをCSSに追加するだけ。

html {
	scroll-behavior: smooth;
}
CSSを追記する手順
  1. ダッシュボードの「外観」にある「テーマファイルエディター」を開く
  2. 編集するテーマを「Cocoon Child」に設定する
  3. テーマファイルを「Stylesheet(style.css)」に設定する
  4. 「選択したファイルの内容」にコードを追記する

これだけで、ページ内リンクをクリックしたときに、目的の場所までぬるぬるとなめらかに移動するようになります。

CSSだけで実装する場合の注意点

html {
	scroll-behavior: smooth;
}

この方法は、とにかく手軽に導入できる反面、いくつか注意点があります。

一応お伝えしておくだけで、僕は上記の方法で困ったことは特に無いから安心して。

スクロール速度の調整ができない

CSSの「smooth」は、ブラウザ側がスクロール速度を自動的に決めているため、自由にスピードを変更できません。
そのため「もう少しゆっくり移動させたい」など思っても、調整できないのです。

スクロール速度を細かく調整したいときは「jQuery」で作成する必要があります。

古いブラウザでは非対応

新しい仕様のため、古いブラウザでは対応していない場合があります。

とはいえ、現在では「Chrome・Firefox・Edge・Safari」といった主要ブラウザの多くで対応済み。
従って、一般的なブログを運営されるような方であれば、これも困ることはないでしょう。

たしか、2018年くらいからコードを利用してるけど、困った記憶がないなぁ…

ページ内リンクのズレを補正できない

固定ヘッダーを使用しているサイトだと、ページ内リンクをクリックしたとき、移動先の見出しがヘッダーの下に隠れてしまうことがあります。

これは、ブラウザがリンク先の位置を「ページ上端」から計算しているためです。
CSSの「smooth」では、このズレを補正する機能がないため、別途「スクロール位置に余白を取る」という指定をおこなう必要があります。

例えば、以下のように「scroll-margin-top」を使えば、リンク先がヘッダーに隠れずに表示されます。

h2, h3, h4 {
	scroll-margin-top: 100px;
}
「100px;」の数値は、固定ヘッダーの高さに合わせて調整してください。

ただ、これではパソコンとスマホでヘッダーの高さが異なる場合、どちらかの端末で微妙にズレてしまいます。
例えば、パソコンのヘッダーは100pxでも、スマホでは80pxなどに縮んでいるケースです。

このようなときは、以下のコードを追記してください。

/* パソコン用のコード(画面幅768px以上) */
@media screen and (min-width: 768px) {
	h2, h3, h4 {
		scroll-margin-top: 100px;
	}
}

/* スマホ用のコード(画面幅768px未満) */
@media screen and (max-width: 767px) {
	h2, h3, h4 {
		scroll-margin-top: 80px;
	}
}
完成版のコードは、以下になります!
html {
	scroll-behavior: smooth;
}

/* パソコン用のコード(画面幅768px以上) */
@media screen and (min-width: 768px) {
	h2, h3, h4 {
		scroll-margin-top: 100px;
	}
}

/* スマホ用のコード(画面幅768px未満) */
@media screen and (max-width: 767px) {
	h2, h3, h4 {
		scroll-margin-top: 80px;
	}
}

このように分けることで、どの端末でもリンク先の見出しが正しい位置に表示されるようになります!

まとめ|CSSだけでも快適なスクロール体験は作れる

紹介した方法は、わずか3行でスムーズスクロールを実現できる、とても優れた方法です。

Cocoonとの相性も良く、僕自身はこのCSSで困ったことはありません。
動作が軽く、余計なコードを追加しなくていいので、テーマの動きを邪魔することがないのも良いですね。

ページ内リンクをクリックしたときの動きをぬるぬる・なめらかに変えたたいときは、ぜひ紹介したCSSを試してみてください!

コメント

タイトルとURLをコピーしました