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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

1197閲覧

スクロールアニメーションがうまくできない

tomtom1

総合スコア168

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2020/03/28 08:50

編集2020/03/28 08:51

###実現したい事
下記のサイトを参考にスクロールアニメーションを実装しました。
あるスクロールして要素が表示されると、アニメーション付きで表示されます。
https://firstlayout.net/css-animation-of-images/
参考サイトのようにうまく実装はできたのですが、指定したclass全てに適用となり、
eachで繰り返しているそのclassを保有する全ての要素に対しアニメーションが発生してしまいます。
おそらく、thisなどを使い、そのクラスのthis(その要素)に対しという支持が必要かと思いますが、js部分でどのようにすれば良いか把握できずにいます。
###コード

view

1<div class="main"> 2 <% @articles.each do |article| %> 3 <div class="index-left"> 4 <div class="article-img"> 5 <%= image_tag article.image_name.thumb.url %> 6 <h2><%= article.title %></h2> 7 </div> 8 </div> 9 <% end %> 10</div>

js

1$(document).on('turbolinks:load',function() { 2 const image = document.querySelectorAll('.index-left'); 3 const observer = new IntersectionObserver(function(entries) { 4 entries.forEach(function(entry) { 5 if (entry.intersectionRatio > 0) { 6 entry.target.classList.add('img-animation'); 7 } else { 8 entry.target.classList.remove('img-animation'); 9 } 10 }); 11 }); 12 Array.prototype.forEach.call(image, function(img) { 13 observer.observe(img); 14 }); 15})();

css

1.article-img { 2 animation: img-opacity 2s cubic-bezier(.4, 0, .2, 1); 3 overflow: hidden; 4 position: relative; 5} 6 7.article-img:before { 8 animation: img-animation 2s cubic-bezier(.4, 0, .2, 1) forwards; 9 background: #fff; 10 bottom: 0; 11 content: ''; 12 left: 0; 13 pointer-events: none; 14 position: absolute; 15 right: 0; 16 top: 0; 17 z-index: 1; 18} 19@keyframes img-opacity { 20 0% { 21 opacity: 0; 22 } 23} 24@keyframes img-animation { 25 100% { 26 transform: translateX(100%); 27 } 28}

お分かりの方いましたらご教示お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

CSSで指定しているアニメーションですが、
.img-animationの子要素の.article-imgに指定しいないといけないのでは。

CSS

1.img-animation .article-img { 2 animation: img-opacity 2s cubic-bezier(.4, 0, .2, 1); 3}

Intersection Observerで要素監視→Classをトグルの部分は意図通りに動いているように見えます。

投稿2020/04/21 19:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tomtom1

2020/04/22 06:48

ありがとうございます!お教え頂いたように書くとどのようなことが起きますか?汗 今のところ、アニメーションはうまく実装できているので、改善の必要はないのかなと思っています。 うまくいっていない点については、 <% @articles.each do |article| %>でarticleを一覧しているのですが、全てのarticleが同じclassを保有しているため、一番トップのarticleのアニメーションが着火されると、全てのarticleにアニメーションが同時に起動します。そこをそれぞれに直したいです。おそらくjsあたりで、"その要素に"という記述が必要かと思っています..。
退会済みユーザー

退会済みユーザー

2020/04/22 07:38

こちらはCSSを調整した場合のデモです。 https://codepen.io/lisa1111/pen/abvBRvx (ところどころ勝手に調整してます。) 「アニメーションの対象となる要素」をCSSで変えることが必要です。 今JSでclassを付け外しされていますので、 `.img-animation`クラスが付与された要素にアニメーションが起こるようにしなければなりません。 その例が先のCSSです。 現状は、CSSの指定で`.article-img` や `.article-img:before` クラスを持つ「全て」の要素がアニメーションの対象になっています。 そのため、おっしゃっているように 「全てのarticleにアニメーションが同時に起動」するようになっています。
tomtom1

2020/04/24 10:55

ご回答ありがとうございます!まさにこちらがやりたかったことです! 少し時間かかってしまいましたが、無事解決しました!ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/04/24 10:58

無事に解決できてよかったです^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問