🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1120閲覧

Javascriptで遅延アニメーションを実装したい。

akito-miyazato

総合スコア5

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2021/02/26 14:21

jsで遅延アニメーションを実装したいと思っています。

各'item'に対して遅延でクラス'anime'を追加したいと思っております。
下記がJSのコードです。

const item = document.querySelectorAll('.item');

const contents = document.querySelector('.contents')

document.addEventListener('scroll', () => {
const targetElement = contents.getBoundingClientRect().top
+ contents.clientHeight * .6;

let time = () =>{ for (let i = 0; i < item.length; i++){ if (window.innerHeight > targetElement){ item[i].classList.add('anime'); } } } setInterval(time,1000);

});

まずコンテンツの6割が画面に入ったら'item'にクラスを追加したいと思っております。
setIntervalを使って1秒ごとにクラス'anime'を追加するのを、for文を回しているつもりです。
でもこれだと1秒後に一括でクラス'anime'が追加されてしまい、順番ごとに追加されません。

これをどうすれば遅延してクラスを追加することができますでしょうか。
どなたか教えていただけますと幸いです。

参考にCSSも載せます↓

.contents{
width: 1000px;
margin: 150px auto;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
background-color: #e5e5e5;
}

.item{
width: 30.3333%;
height: 300px;
line-height: 300px;
text-align: center;
background-color: red;
margin: 0 0 20px;
opacity: 0;
transition: .6s;
}

.item.anime{
opacity: 1;
}

ぜひよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

まずコンテンツの6割が画面に入ったら'item'にクラスを追加したい

Intersection Observer をお勧めします。
Intersection Observer API - Web API | MDN

投稿2021/02/27 02:21

Lhankor_Mhy

総合スコア36928

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問