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

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1781閲覧

スクロール(scroll)をある一定量ごとにスクロールさせたいです。

ShojiroAbe

総合スコア31

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/09/08 18:51

以下コードペンからコピペ

html

1<div class=a></div> 2<div class=b></div> 3<div class=c></div>

css

1*{ 2 padding: 0; 3 margin: 0; 4} 5.a,.b,.c{ 6 width: 100vw; 7 height: 100vh; 8} 9 10.a{ 11 background-color: #f00; 12} 13.b{ 14 background-color: #0f0; 15} 16.c{ 17 background-color: #00f; 18}

js

1var html = $("html").offset().top; 2var a = $(".a").offset().top; 3var b = $(".b").offset().top; 4var $window = $(window); 5//一度のスクロールごとに100vh動かしたい 6if (html==a) { 7 $window.scroll(function(){ 8 $("html,body").animate({scrollTop:b}, "swing"); 9 // 上や下にスクロールできない 10 }); 11 }; 12

コンテンツごとに一度のスクロール動作で100vhずつ動かしたく
一旦100vhは動いたのですが、その後"b"から動かなくなりました
何が原因でしょうか?

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

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

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

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

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

guest

回答1

0

こんにちは。

何が原因でしょうか?

ここが原因です。

js

1 $window.scroll(function(){ 2 $("html,body").animate({scrollTop:b}, "swing"); 3 // 上や下にスクロールできない 4 });

$window.scroll()はスクロールイベントのリスナを設定するものです。スクロールがされるたびに、中に書かれている関数を実行します。
その関数内の$("html,body").animate({scrollTop:b}, "swing");は、bの位置までアニメーションでスクロールする、というコードです。

つまり、まとめると、スクロールがされるたびにbの位置まで戻されるので、bから動かなくなります。

投稿2020/09/09 01:32

Lhankor_Mhy

総合スコア36960

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

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

ShojiroAbe

2020/09/09 09:16

御指摘ありがとうございます。 一応自分なりに if(html==a)という条件下でしか動かないようにしたつもりでしたが Mhyさんのとおり、一向に動きません 立て続けに申し訳ありませんが、定義の仕方がいけなかったのでしょうか? この点について何か解消法はありますでしょうか?
Lhankor_Mhy

2020/09/10 01:16

$window.scroll()はスクロールイベントのリスナを設定するものです。 ですので、設定された後は、スクロールがされるたびに、中に書かれている関数を実行します。 ここでのif文は$window.scroll()の外側にあるので、この設定をするか否か、という働きをしています。 一度設定されてしまえば、その後はif文を通らずに、スクロールがされるたびに、中に書かれている関数を実行します。 そうではなくて、アニメーション処理をするか否か、という働きをさせたいのであれば、$("html,body").animate()の外側に書いた方がいいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問