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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

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

HTML

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

Q&A

解決済

1回答

1517閲覧

jQueryでスクロール時に特定の要素が画面内に入ったらクラスを付与したい

Ukwfe65

総合スコア2

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2021/09/29 11:57

###jQueryでスクロール時に特定の要素が画面内に入ったらクラスを付与したい

Wordpressでスクロールアニメーションを実装するために、jQueryでスクロール時に特定のクラスを持った要素が画面内に入った場合、新たにクラスを付与したいのですが上手く動作しない状態です。

エラー内容

画面スクロールしてjs-scroll-triggerクラスが画面内に入った場合is-activeクラスを付与したいです。

クラスは意図した通り付与されるのですが、クラス付与されるタイミングが画面スクロール時ではなく、レンダリングが終わった時点ですでにis-activeクラスが付与された状態になっています。

ソースコード

html

1<div class="u-fade-type-slide js-scroll-trigger"> 2 <img src="xxx.jpg" alt=""> 3</div>

js

1 (function ($) { 2 if ($('.js-scroll-trigger').length) { 3 scrollAnimation(); 4 } 5 6 function scrollAnimation() { 7 $(window).scroll(function () { 8 $(".js-scroll-trigger").each(function () { 9 let position = $(this).offset().top, 10 scroll = $(window).scrollTop(), 11 windowHeight = $(window).height(); 12 13 if (scroll > position - windowHeight + 200) { 14 $(this).addClass('is-active'); 15 } 16 }); 17 }); 18 } 19 $(window).trigger('scroll'); 20}(jQuery));

試したこと

下記サイトを参考にしたもので、ローカルで検証したところ意図した挙動になったため、Wordpressでも同じ動きができないかと試していたところ今回の質問の状態になりました。
https://moshashugyo.com/media/animate-on-scroll

■コンソールの確認
エラーは表示されませんでした。

■jQueryバージョンの確認
参考サイトではjQuery3.3.1、検証しているWordpressサイトではjQuery2.2.4を使用していました。参考サイトのコードをjQuery2.2.4で実行したところ問題なく動作したため、バージョンの問題ではないと判断しました。

■違うブラウザで確認
Chrome、Firefox両方で確認しキャッシュクリアしましたが、同じ挙動でコンソールにエラーはありませんでした。

■console.logで確認
本当にif文の中に分岐しているのか確認しました。

if (scroll > position - windowHeight + 200) { $(this).addClass('is-active'); console.log('xxx'); }

ページスクロールして確認すると、js-scroll-triggerクラスの要素を一つ見つけた時に、ページ内の全てのjs-scroll-triggerクラスの要素に処理をしてしまっているようでした。

しかし、同じ処理をしていてもローカルでは問題なくクラス付与できており、どう検証を進めて行けば良いのか行き詰まってしまいました。
中途半端な質問になってしまい大変恐縮なのですが、どう検証していけば良いかご教授いただけないでしょうか。

補足情報

Wordpressは5.8.1を使用しています。

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

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

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

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

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

yambejp

2021/09/30 00:27

画面にはいったら付加するのと付加された状態で画面に入るのは どう違うか説明してください
Lhankor_Mhy

2021/09/30 04:56

同じ場所で console.log(scroll , position , windowHeight) としてみるとか。
Ukwfe65

2021/10/26 03:00

クラス付与されるタイミングでアニメーションを開始したかったためです。
Ukwfe65

2021/10/26 03:01

ありがとうございます。とにかくconsole.logで確認してみます。
guest

回答1

0

ベストアンサー

当てずっぽうで

js

1$(window).trigger('scroll'); 23$(window).on('load',function(){$(window).trigger('scroll');});

これでどうなりますかね

投稿2021/09/30 04:49

KazuhiroHatano

総合スコア7819

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

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

Ukwfe65

2021/10/26 03:08

ご回答ありがとうございます。 ご指摘の箇所変更しても変わらず、条件式が間違っていることが原因のようでした。 こちらでスクロール位置を取得できました。 if (scroll > position - 任意の数字) { お騒がせし申しわけありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問