はじめに
フロントページタイプが「タブ一覧」の場合、ページ下部まで投稿一覧を確認した後、タブを切り替える際に、ページ上部までスクロールし直す必要があります。
特にスマートフォンでは、この操作が手間に感じられることがあります。
そこで、画面幅が480px以下の場合、投稿を横並びにスクロール表示し、タブをそのすぐ上に配置するように変更します。
さらに、カードをスワイプした際、1枚ずつ止まらずに連続で送られてしまう問題があります。
この問題を解決するため、CSSのscroll-snap-typeを用いて、スワイプ時にもカードが1枚ずつ確実に停止するようにします。
この記事では、この方法について説明します。
スクロールスナップとは
スクロールスナップとは、スクロール操作時に特定の位置(スナップポイント)でスクロールがピタッと止まるようにする機能です。
上下方向のスクロールした際、カードの途中で止まることなくスナップし、カード全体が表示されるようになります。
ただし、PC表示ではこの変更の効果が目立ちにくい場合があります。
- 通常
- スナップ
完成イメージ

実装手順
以下の手順で実装します。
- ラベルCocoon設定
表1に示す項目を設定します。
Cocoon設定 設定 大項目 項目 設定値 インデックス フロントページタイプ タブ一覧 オン カードタイプ スマートフォンで縦型&タイル型のエントリーカードを1カラムにする オン - ラベルCSSを追加
以下のコードをstyle.cssに追加します。
@media (max-width: 480px) { .tab-cont .ect-vertical-card { &.sp-entry-card-1-column { flex-wrap: nowrap; overflow-y: hidden; scroll-snap-type: x mandatory; .a-wrap { flex-shrink: 0; scroll-snap-align: center; } } } }
参考:関連記事をスクロールスナップする方法
関連記事に、スクロールスナップを使えば、スクロールをした際に、各記事の先頭へピタッと吸い付くような心地よい横スクロールが実装できます。
完成イメージ
本ページに完成イメージを反映させます。
実装手順
以下のコードをstyle.cssに追加します。
.body .related-list {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
scroll-snap-type: x mandatory;
}
.body .related-entry-card-wrap {
flex-shrink: 0;
max-width: 100%;
scroll-snap-align: start;
}
さいごに
今回紹介した方法を使えば、スマートフォンの操作性を大幅に向上させることができます。
タブ一覧の快適な切り替えや、スナップスクロールによる滑らかな動作を簡単に実装可能です。
これにより、ユーザーにとって使いやすく、魅力的なウェブサイトを作成できるでしょう。



