質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

277閲覧

scrollifyを使用した縦画面でのフィットスクロール実装について

begerking

総合スコア28

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/03/30 09:35

前提

初心者のため、もしかしたら非常に簡単なことかもしれません。
色々と試してみたものの、どうしても実現出来ませんでした。
どなたか解決前提でご教授頂けますと幸いです。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

 を利用して縦画面の紙芝居のようなスクロールを実現したい

  • 該当の数画面分フィットするが、該当以外の箇所以前・以降は普通にスクロールさせる
  • さらにページャーも該当部分が表示されている時は画面右中央に固定し、以外の部分では表示させない

参考にしたサイト

現在のコードはこちらを参考にしました。
https://liginc.co.jp/357738

表示参考サイト

細かい動きは別ですが、以下のサイトのようなものが理想です。
https://hr-studio.jp/
→画面中部あたりの「管理がしやすい」「簡単に作成」の箇所

https://liginc.co.jp/
→TechnologyやDesignといった部分

発生している問題

  • フィットスクロールさせたくない部分(該当箇所の前後コンテンツ)も同じ動きになってしまう
  • ページャーが該当部分外でも表示されてしまう
  • 全画面フィットスクロールの1画面分がなぜか除外され、それより上の通常コンテンツ部分がフィットスクロールしてしまう
  • ただし3画面目の下の通常コンテンツはスクロール表示すらできない

該当のソースコード

html

1<header></header> 2<section class="standard"> 3 <div class="inner"> 4 通常スクロールコンテンツ通常スクロールコンテンツ 5 </div> 6</section> 7<!------ これより上通常スクロール--------> 8 9<!------ ここから全画面フィットスクロール (3画面分)--------> 10<div class="b_pager"> 11<section class="b-section js-section" data-section-name="section1" id="section1"> 12 <div class="section-content">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト 13 </div> 14</section> 15<!-- contents --> 16<section class="b-section js-section" data-section-name="section2" id="section2"> 17 <div class="section-content">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト 18 </div> 19</section> 20<!-- contents --> 21<section class="b-section js-section" data-section-name="section3" id="section3"> 22 <div class="section-content">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト 23 </div> 24</section> 25<!-- contents --> 26<ul class="pager" id="js-pager"></ul> 27</div> 28<!------ ここまで全画面フィットスクロール (3画面分)--------> 29 30<!------ これより下通常スクロール--------> 31<section class="standard"> 32 <div class="inner"> 33 通常スクロールコンテンツ通常スクロールコンテンツ 34 </div> 35</section> 36<section class="standard"> 37 <div class="inner"> 38 通常スクロールコンテンツ通常スクロールコンテンツ 39 </div> 40</section> 41<footer></footer> 42

js

1var $section = $('.js-section'); // 各スライド 2var $pager = $('#js-pager'); // ページャー枠 3 4// scrollifyのオプション設定 5var option = { 6 section : '.js-section', 7 easing: "swing", 8 scrollSpeed: 600, 9 scrollbars: true, 10 before:function(index) { 11 pagerCurrent(index); // ページャーに対応する順番にクラス名を付与 12 }, 13 afterRender:function() { 14 createPager(); // ページャーの作成 15 } 16}; 17 18$(function() { 19 $.scrollify(option); // scrollifyの実行 20}); 21 22 23 24// ============================== 25// functions 26// ------------------------------ 27 28// ページャーに対応する順番にクラス名を付与 29function pagerCurrent(index = 0) { 30 var $li = $pager.find('li'); 31 $li.removeClass('is-current'); 32 $li.eq(index).addClass('is-current'); 33} 34 35// ページャーの作成 36function createPager() { 37 $section.each(function(i, e){ 38 // ページ内リンク先の作成 39 var sectionName = $(e).attr('data-section-name'); 40 // 最初のliにはクラスを付与 41 var addClass = ''; 42 if (i === 0) { 43 addClass = 'is-current'; 44 } 45 // liのHTML作成 46 var html = ''; 47 html += '<li class="' + addClass + '">'; 48 html += '<a href="#' + sectionName + '"></a>'; 49 html += '</li>'; 50 $pager.append(html); 51 }); 52 53 pagerLink(); 54} 55 56// ページャーでaタグをクリックされたらスクロールする 57function pagerLink () { 58 $pager.find('a').on('click', function() { 59 $.scrollify.move($(this).attr("href")); 60 }); 61}

補足情報(FW/ツールのバージョンなど)

以上になります。Scrollifyで用意されているオプションやメソッドを
活用すればうまくいきそうではあるのですが、理解が足りず、あと一歩のところで実現できません。
scrollify自体にはこだわりがなく、どうしてもこれが良いというわけではありません。

大変恐縮ですが、解決策をお知りの方、いらっしゃいましたら
少しでも構いません。解決に近づける助言・ご指導のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問