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

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

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

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

Q&A

1回答

2310閲覧

jQueryでスクロールして画像を下から出現させる際の画像の位置取得のやり方

kaiserdoragon

総合スコア21

jQuery

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

0グッド

0クリップ

投稿2021/05/09 10:27

お世話になります。

jqueryでスクロールした際に画像が下から出現する際に画像の位置取得のやり方で理解ができていないところがあり質問させて頂きます。

以下がそのコードになります。

jquery

1$(function(){ 2 $(window).scroll(function (){ 3 $('.fadein').each(function(){ 4 var targetElement = $(this).offset().top; 5 var scroll = $(window).scrollTop(); 6 var windowHeight = $(window).height(); 7 if (scroll > targetElement - windowHeight + 200){ 8 $(this).css('opacity','1'); 9 $(this).css('transform','translateY(0)'); 10 } 11 }); 12 }); 13}); 14

こちらのコードは下記のサイトから引用しています。
http://ishi-note.com/6814.html

$(this).offset().topは、ターゲット要素の高さ
$(window).scrollTop();は、スクロール位置(ページの一番上からディスプレイ上端)
$(window).height();は、ウィンドウの高さ

を取得しておりif(scroll > targetElement - windowHeight + 200)の部分で画像の位置を取得していると思います。

しかし scroll > targetElement - windowHeight + 200 でなぜ画像の位置が取得できるのかイメージができていません。

ご教授よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

1個ずつ分解していけば明白です。

var targetElement = $(this).offset().top;

対象要素の左上の座標のtop(画面最上部からの距離)を取得しています。
offset()

scroll は現在のスクロール量
これは「画面左上端を0,0として移動した距離」とほぼ同じなると思って良いです。

$(window).height()で画面の高さ

つまり

scroll > targetElement - windowHeight + 200

現在のスクロール量 > 対象要素のトップからの距離 - 画面の高さ + 200

となっています。
文字よりも図にしてみた方が良いかもしれません。

200は「見え方をよりそれっぽく見せるための補正数値」と思って良いと思います。
この数値が0だとどのタイミングで要素がどのように動くか
上げたり下げたり試してみると良いです。

ひとまず、各数値を画面のどこかに出力するようにしておくと、見えてくるところがあります(consoleだとかなりうるさいことになるので、画面上に出力した方が良い)

投稿2021/05/09 10:50

編集2021/05/09 10:51
m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問