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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

jQuery

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

Q&A

解決済

3回答

527閲覧

jQueryとcssだけでスクロールするとフェードインするアニメーションができません。

oyu

総合スコア48

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

jQuery

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

0グッド

0クリップ

投稿2019/11/01 02:47

前提・実現したいこと

jQueryとcssだけでスクロールするとフェードインするアニメーションを作っています。
スクロールするとscrollinのクラスが付与され実行されopacityで非表示になりfadeinで表示されるのですが
scrollinが付与されず画像が非表示になりません。
jQueryのコードが間違えているのでしょうか?

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="keywords" content=""> 6 <meta name="description" content=""> 7 <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=auto"> 8 <meta property="og:site_name" content=""> 9 <meta property="og:title" content=""> 10 <meta property="og:url" content=""> 11 <meta property="og:type" content=""> 12 <meta property="og:image" content=""> 13 <title></title> 14 <link rel="stylesheet" href="css/style.css"> 15 <link rel="stylesheet" href="js/fadein.css"> 16 </head> 17 <body> 18 <div id="wrapper"> 19 <div class="fadein"> 20 <div>子要素</div> 21 <div>子要素</div> 22 <div>子要素</div> 23 <div>子要素</div> 24 </div> 25 </div> 26 </body> 27</html>

css

1body { 2 margin: 0; 3 padding: 0; 4} 5 6#wrapper { 7 8} 9 10.inner { 11 max-width: 1200px; 12 width: 100%; 13 margin-left: auto; 14 margin-right: auto; 15} 16 17.fadein { 18 opacity: 1; 19 transform : translate(0, 50px); 20 transition : all 1500ms; 21} 22 23.fadein.scrollin{ 24 opacity: 0; 25 transform: translate(0, 0); 26} 27

jQuery

1$(window).scroll(function (){ 2 $('.fadein').each(function(){ 3 var elemPos = $(this).offset().top, 4 scroll = $(window).scrollTop(), 5 windowHeight = $(window).height(); 6 if (scroll > elemPos - windowHeight + 100){ 7 $(this).addClass('scrollin'); 8 } 9 }); 10 });

試したこと

ネットで調べて何度か同じような実装を行ったのですが
結果は同じようになります。

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

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

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

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

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

guest

回答3

0

ベストアンサー

HTML

1<link rel="stylesheet" href="js/fadein.css">

となってますが、cssではなくJavascriptなので、正しくはこうであるはずです。
※ファイル名の拡張子もcssにしているのであれば、jsに変えるべきです。

HTML

1<script src="js/fadein.js"></script>

また、fadein.jsで、jQueryを使用しているのであれば、jQueryのjavascriptを先に読み込まないと駄目です。

HTML

1<script 2 src="https://code.jquery.com/jquery-3.4.1.min.js" 3 integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" 4 crossorigin="anonymous"></script> 5<script src="js/fadein.js"></script>

投稿2019/11/01 04:56

LineOfLightning

総合スコア253

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

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

oyu

2019/11/01 05:17

教えていただいた通りに行ったのですがスクロールしたらフェードインするアニメーションになりません。 原因が分かりません。
LineOfLightning

2019/11/01 05:21

F12で開発者ツール開いてみてください。 ちゃんとfadein.jsは読み込まれていますか?
oyu

2019/11/01 05:28 編集

再読み込みとキャッシュを調べたのですが変わりはないようです。 fadein.jsが読み込まれてないのが原因でしょうか?
LineOfLightning

2019/11/01 05:30

開発者ツールでfadein.jsが読み込まれているかどうかがわかるはずです。 ファイル名がfadein.cssのままにしてあるせいで、fadein.jsとファイル名が不一致で読み込まれていないのではないかということはないですよね?と聞いてるんです。
oyu

2019/11/01 05:32

こちらの通りにコードを書き換えました。 どうでしょうか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="keywords" content=""> <meta name="description" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=auto"> <meta property="og:site_name" content=""> <meta property="og:title" content=""> <meta property="og:url" content=""> <meta property="og:type" content=""> <meta property="og:image" content=""> <title></title> <link rel="stylesheet" href="css/style.css"> <script src="js/fadein.js"></script> <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(function(){ $(window).scroll(function (){ $('.fadein').each(function(){ var elemPos = $(this).offset().top, scroll = $(window).scrollTop(), windowHeight = $(window).height(); if (scroll > elemPos - windowHeight + 100){ $(this).addClass('scrollin'); } }); }); }); </script> </head> <body> <div id="wrapper"> <div class="fadein"> <div>子要素</div> <div>子要素</div> <div>子要素</div> <div>子要素</div> </div> </div> </body> </html>
LineOfLightning

2019/11/01 05:38

javascriptをhtmlに埋め込むなら 「<script src="js/fadein.js"></script>」は不要です。 また、先程も言ったように「<script src="js/fadein.js"></script>」では、jQueryを使用しています。 jQueryのスクリプトタグより、先に「<script src="js/fadein.js"></script>」を書いては絶対に駄目です。 </body>タグの直前に<br>タグを百個ほどつけて、スクロールできるようにしてみてください。 それでスクロールしてもフェードアウトされませんか?
oyu

2019/11/01 05:47

ありがとうございます。 原因は読み込んでいなかったのですね。
LineOfLightning

2019/11/01 05:58

厳密に言いますと以下の通りですね。 1. fadein.jsをlinkタグで読み込んでいた。結果、javascriptとして読み込まれないので、処理が行われない。※本来はscriptタグで読み込むべき。 2. fadein.jsでは、jQueryで定義された関数を使用しようとしているのに、jQueryのscriptタグより先にfadein.jsのscriptタグを記載していたので、fadein.jsが先に読み込まれてしまっていた。結果、「そんな関数ないよ!」とエラーになってしまい、fadein.jsのjavascriptが実行されなかった。
guest

0

下記をhtmlファイルに追加してみてください

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(function(){ $(window).scroll(function (){ $('.fadein').each(function(){ var elemPos = $(this).offset().top, scroll = $(window).scrollTop(), windowHeight = $(window).height(); if (scroll > elemPos - windowHeight + 100){ $(this).addClass('scrollin'); } }); }); }); </script>

投稿2019/11/01 04:06

makosankibu

総合スコア289

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

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

oyu

2019/11/01 04:24

htmlファイルに追加したのですが現状が変わりません。 原因はなぜでしょうか?
guest

0

提示されたコードで動くので、jQueryと当該スクリプトがHTMLに無いのが問題ではないでしょうか。

投稿2019/11/01 03:07

kei344

総合スコア69400

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

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

oyu

2019/11/01 03:14

分からないのですが該当するスクリプトがないとはaddClassでscrollinクラスが付与されるのではないのでしょうか?
kei344

2019/11/01 03:18

提示されたHTMLにjQueryを読み込んだ形跡が無いことを指摘しています。 何がわからないか、具体的にしてください。
oyu

2019/11/01 03:22

実行したいアニメーションなのですが下からfadeInさせる方法ではなく上から非表示になり下にスクロールすればフェードインする方法はどのように行うのでしょうか?
kei344

2019/11/01 03:26

「scrollinが付与されず画像が非表示になりません。」と質問内容が変わっています。
oyu

2019/11/01 03:29

質問内容を間違えました。 すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問