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

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

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

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

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回答

2000閲覧

フェードインの開始位置とタイミングについて

arazin_9

総合スコア1

スクロール

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

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クリップ

投稿2021/04/23 07:57

画面をスクロールしてフェードインしているのですが、
現状は画面の下の方で4分の1程度見えてくるとフェードイン始めてしまいます。
これを画面の中央(2分の1)くらいの高さにきたらフェードインするようにしたいのですが、
方法はありますでしょうか?

html

1<head> 2<script src="js/jquery-3.1.1.min.js"></script> 3</head> 4<body> 5<div class="scrollanime"> 6 <img src="img/n01.png" alt="画像"> 7</div> 8</body> 9

javascript

1$(function () { 2 $(window).scroll(function () { 3 const wHeight = $(window).height(); 4 const scrollAmount = $(window).scrollTop(); 5 $('.scrollanime').each(function () { 6 const targetPosition = $(this).offset().top; 7 if(scrollAmount > targetPosition - wHeight + 100) { 8 $(this).addClass("fadeInDown"); 9 } 10 }); 11 }); 12});

css

1.scrollanime { 2 opacity: 0; 3 transition-delay: 600ms; 4} 5.fadeInDown { 6 animation-name: fadeInDown; 7 animation-duration: 2s; 8 animation-fill-mode: forwards; 9 transition-delay: 2s; 10} 11@keyframes fadeInDown { 12 0% { 13 opacity: 0; 14 } 15 100% { 16 opacity: 1; 17 transform: translate(0); 18 } 19}

試したこと1 wHeight + 数値の確認

javascript

1if(scrollAmount > targetPosition - wHeight + 100) {

試したこと2 CSSで開始時間を遅らせる

css

1transition-delay: 2s;

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

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

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

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

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

guest

回答1

0

ベストアンサー

試したこと2 CSSで開始時間を遅らせる

条件を満たしてしまうとスクロールやめても待てば動いてしまうのでこちらは変えずに、

試したこと1 wHeight + 数値の確認

数値の方を変えてみましょう。
条件式の右側が小さくなれば良いはずですから、
+100を取るとか-にしてみるとか…
※試行錯誤して欲しかったのだけどもミスリードになるから打消し線

(wHeight / 2)が画面の半分の高さになるので、
targetPosition - (wHeight / 2)としてあげると画面の半分くらいで開始するかなと。

以下蛇足です。
scrollAmount = $(window).scrollTop() ←画面の一番上
targetPosition = $(this).offset().top ←要素の上っ面の位置
wHeight = $(window).height() ←画面の高さ
変数の中身が何なのか?確認しながら計算すると理解が深まるかと。

蛇足2
お前計算ミスってるぞというのは遠慮なく突っ込んでください。
違うだろっというツッコミも歓迎いたしますです。

蛇足3
手持ちのサイトで似たようなものを使っていたので、
要素が出現するタイミングを少し遅らせるようにコード改修しました。
自分はそれほど気にならなかった点なので貴重な意見かなと。
ありがとうございます。

投稿2021/04/23 09:19

編集2021/04/23 09:39
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

arazin_9

2021/04/24 02:22

丁寧なご回答ありがとうございます。 (wHeight / 2)で解決することができました。 ユーザーによってスクロールするのスピードが違うので、困っていました。 大変助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問