実現したいこと
ここに実現したいことを箇条書きで書いてください。
横スクロール型のサイトでセクションごとにページ数をカウントしたい
参考サイト:https://www.zoom-japan.com
前提
現在GSAPを使用して横スクロール型のサイトを作成しています。
各セクションが画面内に入ったタイミングで「1/9」「2/9」のように現在のページ数を表示させたいです。
動きとしては参考サイトとまったく同じです。
発生している問題・エラーメッセージ
このページ数を表示させるようなjsライブラリなどを探しているのですが見つかりません。
試したこと
「ページャー js」や「ページネーション js」などで調べたのですが、wordpressの記事一覧ページに使うようなものしか出てきませんでした。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
コードがないので具体的には何とも言えませんが、ページ切り替え用の要素などを用意しておいて、その要素のビューポート上の位置をもとに表示を切り替えるといいのではないかと思いました。
適当に書いてみました。
html
1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/destyle.css@3.0.0/destyle.min.css"> 9 <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.3/gsap.min.js" 10 integrity="sha512-7Au1ULjlT8PP1Ygs6mDZh9NuQD0A5prSrAUiPHMXpU6g3UMd8qesVnhug5X4RoDr35x5upNpx0A6Sisz1LSTXA==" 11 crossorigin="anonymous" referrerpolicy="no-referrer"></script> 12 <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.3/ScrollTrigger.min.js" 13 integrity="sha512-LQQDtPAueBcmGXKdOBcMkrhrtqM7xR2bVrnMtYZ8ImAZhFlIb5xrMqQ6uZviyeSB+4mYj89ta8niiCIQM1Gj0w==" 14 crossorigin="anonymous" referrerpolicy="no-referrer"></script> 15 <style> 16 .page { 17 position: fixed; 18 z-index: 1; 19 } 20 </style> 21</head> 22 23<body> 24 <div class="page"></div> 25 <br><br><br><br><br><br><br><br><br><br> 26 <div class="scroll"> 27 <img src="http://placehold.jp/150x150.png?text=" alt="" data-page="1"> 28 <img src="http://placehold.jp/150x150.png?text=" alt="" data-page="2"> 29 <img src="http://placehold.jp/150x150.png?text=" alt="" data-page="3"> 30 </div> 31 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 32 <script> 33 const target = document.querySelector('.scroll'); 34 const page = document.querySelector('.page') 35 36 gsap.to(target, { 37 x: () => -500, 38 ease: 'none', 39 scrollTrigger: { 40 trigger: target, 41 start: 'top top', 42 end: '+=1000', 43 scrub: true, 44 pin: true, 45 }, 46 }); 47 48 const callback = (entries, observer) => { 49 entries.forEach((entry) => { 50 if (entry.isIntersecting) page.textContent = `${entry.target.dataset['page']}/3`; 51 }); 52 }; 53 const options = { 54 root: document, 55 rootMargin: '0px -100% 0px 0px', 56 threshold: 0 57 } 58 59 const observer = new IntersectionObserver(callback, options); 60 target.querySelectorAll('img').forEach(el => observer.observe(el)); 61 62 </script> 63</body> 64 65</html>
投稿2023/12/04 07:23
編集2023/12/04 10:29総合スコア37445
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
横スクロール型のサイトでセクションごとにページ数をカウントしたい
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/12/06 09:03
2023/12/06 09:22
2023/12/06 16:24