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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

591閲覧

jsでcssアニメーションの開始タイミングを制御

ochaast

総合スコア13

CSS3

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/05/02 16:19

編集2022/01/12 10:55

titleというクラス名を持った要素にcssアニメーションをあて、可視範囲(厳密には要素がスクリーン下から1/4)に到達時に開始させたいのですが、cssの内容をjsで記述する部分でつまづいています。。

お手数おかけしますが、どのように記載すれば良いか、ご教示頂けたら幸いです。

HTML

1<section> 2 <figure> 3 <a class="content_link"><img src="img/dummy.png" sizes="100vw"></a> 4 </figure> 5 <h2 class="title">title</h2> 6</section>

CSS

1.title { 2 -webkit-animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 3 animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 4} 5 6@-webkit-keyframes fadein { 7 0% { 8 letter-spacing: 1em; 9 -webkit-transform: translateZ(400px) translateY(-300px); 10 transform: translateZ(400px) translateY(-300px); 11 opacity: 0; 12 } 13 40% { 14 opacity: 0.6; 15 } 16 100% { 17 -webkit-transform: translateZ(0) translateY(0); 18 transform: translateZ(0) translateY(0); 19 opacity: 1; 20 } 21} 22@keyframes fadein { 23 0% { 24 letter-spacing: 1em; 25 -webkit-transform: translateZ(400px) translateY(-300px); 26 transform: translateZ(400px) translateY(-300px); 27 opacity: 0; 28 } 29 40% { 30 opacity: 0.6; 31 } 32 100% { 33 -webkit-transform: translateZ(0) translateY(0); 34 transform: translateZ(0) translateY(0); 35 opacity: 1; 36 } 37}

JS

1$(function(){ 2 $(".title").css("opacity","0"); 3 $(window).scroll(function (){ 4 $(".title").each(function(){ 5 var imgPos = $(this).offset().top; 6 var scroll = $(window).scrollTop(); 7 var windowHeight = $(window).height(); 8 if (scroll > imgPos - windowHeight + windowHeight/4){ 9 $(".title",this).css("opacity","1" ); 10 $(".title",this).css({ 11//この部分 12 }); 13 } else { 14 $(".title",this).css("opacity","0" ); 15 } 16 }); 17 }); 18 });

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

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

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

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

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

Lhankor_Mhy

2019/05/03 01:33

クラスを追加する方が楽そうな気がするのですが、これだとダメなのでしょうか?
naomi3

2019/05/03 03:41

「可視範囲(厳密には要素がスクリーン下から1/4)に到達時に開始させたい」の意味を正確に汲み取れません。完成イメージを詳しく教えてください。
guest

回答2

0

.title自体にアニメーションをつけずに.is-fadeのようなclass(class名はご自由に命名してください)を作って
そこにanimationプロパティを与えてあげて、
スクロールに応じて.is-fadeをつけたり外したりするのがシンプルで良い気がします。
jsではcssのプロパティは制御せずにclassの付け替えだけやってる感じです。

css

1.title { 2 // こちらは削除 3 -webkit-animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 4 // こちらは削除 5 animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 6} 7.is-fade { 8 -webkit-animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 9 animation: fadein 1s cubic-bezier(0.215, 0.610, 0.355, 1.000) both; 10}

js

1if (scroll > imgPos - windowHeight + windowHeight / 4) { 2 $(".title").addClass("is-fade"); 3} else { 4 $(".title").removeClass("is-fade"); 5}

投稿2019/05/06 10:41

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

jQueryの基本的な使い方はご存知のようなので
下記を参照していただければ実装可能かと思われます。
https://iwb.jp/jquery-scrolltop/

投稿2019/05/06 10:11

yasutomi

総合スコア2937

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問