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

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

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

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

JavaScript

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

Q&A

解決済

2回答

1172閲覧

JavaScriptにおけるfunctionの使いまわしについて

tanuki3s

総合スコア3

CSS3

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

JavaScript

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

0グッド

0クリップ

投稿2019/08/10 09:01

編集2019/08/10 09:06

該当のソースコード

HTML

1<div id="exampleId01"> 2</div> 3<div id="exampleId02"> 4</div> 5<div id="exampleId03"> 6</div>

CSS

1.fadeIn_LeftToRight { 2 animation-name: fadeIn; 3 animation-fill-mode: forwords; 4 5} 6 7@keyframes fadeIn { 8 0% { 9 opacity: 0; 10 transform: translateX(-100px); 11 } 12 13 100% { 14 opacity: 1; 15 transform: translateX(0px); 16 } 17}

JavaScript

1LeftToRight("exampleId01"); 2 3LeftToRight("exampleId03"); 4 5function LeftToRight(elm) { 6 let targetElement = document.getElementById(elm); 7 8window.onscroll = function() 9{ 10 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; 11 12 var bottom = scrollTop + document.documentElement.clientHeight; 13 14 var top = targetElement.offsetTop; 15 16 if( top < bottom ) 17 { 18 document.getElementById(elm).class list.add("fadeIn_LeftToRight"); 19 } 20} 21 22} 23

発生している問題・エラーメッセージ

スクロールに応じて要素をフェードインで表示させるコードを実装したいです。
上記のように関数(LeftToRight())を作成して引数にて要素を指定しようとする場合、一回だけの呼び出し(1要素の指定)では無事に動作するのですが、別の要素にも適用させる為に2回呼び出しすると2回目に呼び出した際の要素にのみスタイルが当たってしまい思ったとおりの実装になりません。

最終的にはスクロールに応じて交互に左右からフェードインするようにしたいです。



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

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

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

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

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

guest

回答2

0

ベストアンサー

window.onscrollは1つしかありませんので、後からセットしたものに上書きされてしまいます。

同じイベントに複数のハンドラをセットしたい場合、addEventListenerを使いましょう。

javascript

1window.addEventListener('scroll', function(){ /* 略 */ }, false);

投稿2019/08/10 09:05

maisumakun

総合スコア145184

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

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

0

処理内容が同じなのであれば、同じclassを与えてそのclassに対してscrollイベントを付与すれば良いのではないでしょうか。

投稿2019/08/10 09:08

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問