お世話になっております。
以下ののサイトのように、スクロールして画像や文字が出現する際に、
先に白背景が現れた後に要素(画像)が上から塗られるように出現させるアニメーションはどうやってやっているのでしょうか?
正式なアニメーション名がわからないため、このような呼んでいます。
おそらく画像の上に重ねる要素を疑似要素で作成しているかと思うのですが、
コンテンツを見えないように透過させ、transitionでアニメーションしてみたりなど
いろいろ試行錯誤しているのですが、ふわっとフェードインするようなアニメーションを作ることはできました。
また以下のような灰色背景が先に表示されて後を追うようにめくれて画像が表示されるアニメーションを実装することもできました。
https://command-d.com/
しかしサイトと同じようなきれいなアニメーションを実装することはできず、悩んでいます。
なるべく具体的に教えていただけると幸いです。
よろしくお願いいたします。
該当のソースコード
HTML
1<div class="mask"> 2 <figure><img src="./img/img_01.png"></figure> 3</div>
SCSS
1.mask { 2 position: relative; 3 width: 80%; 4 margin: 30px auto 30px; 5 .mask-bg { 6 position: absolute; 7 top: 0; 8 right: 0; 9 width: 100%; 10 height: 100%; 11 z-index: 2; 12 background-color: #10404c; 13 } 14}
Javascript
1//要素の取得とスピードの設定 2var box = $('.mask'), 3 speed = 700; 4 5box.each(function(){ 6 $(this).append('<div class="mask-bg"></div>') 7 var maskbg = $(this).find($('.mask-bg')), 8 image = $(this).find('img'); 9 var counter = 0; 10 11 image.css('opacity','0'); 12 maskbg.css('width','0%'); 13 //inviewを使って背景色が画面に現れたら処理をする 14 maskbg.on('inview', function(){ 15 if(counter == 0){ 16 $(this).delay(200).animate({'width':'100%'},speed,function(){ 17 image.css('opacity','1'); 18 $(this).css({'left':'0' , 'right':'auto'}); 19 $(this).animate({'width':'0%'},speed); 20 }) 21 counter = 1; 22 } 23 }); 24});
回答1件
あなたの回答
tips
プレビュー