この記事のタイトルを「画像が重なりながら、横からスライドしてきて表示」としていますが、いまいちなんて言っていいのか分からないのですが、「横からイメージがスライドしてきて、すこし遅れてそのイメージに被せるようにイメージがスライドしてきて消える」ようなエフェクトについての説明になります。
まず下記SAMPLEを見てもらったほうが分かりやすいと思います。
>> SAMPLE
スクロールしていくと画像が表示されます。スクロールの位置判定はjQueryで、画像の表示エフェクトはCSSの【transition】を使って表現しています。CSSの【transition】の使い方がちょっと不安な方は、下記リンクから【transition】について確認しておくと、今後理解しやすいと思います。
CSSでアニメーションさせる時によくつかう「transition」プロパティの使い方について説明します。「transition」プロパティは一言でいうと、時間経過による変化を表現するCSSのプロパティとなります。
サンプルコード
コードは下記になります。
【HTML(一部抜粋)】
<div class="ph01-wrap"> <div class="photo-img-cross img-anime-cross"> <img src="img/ph01.jpg" alt=""> </div> </div>
【CSS(一部抜粋)】
.ph01-wrap { width: 800px; position: relative; } .photo-img-cross { position: relative; overflow: hidden; width: 100%; height: auto; } .photo-img-cross:before { content: ""; display: block; position: absolute; width: 0; height: 100%; background-color: #eb3432; z-index: 1; transform-origin: right center; transform: scaleX(1); transition: width 0.3s cubic-bezier(0.19, 1, 0.22, 1) 0s, transform 0.5s cubic-bezier(0.19, 1, 0.22, 1) 0.4s; } .photo-img-cross img { position: relative; width: 100%; height: auto; opacity: 0; left: -100%; transition: 0.7s; } .photo-move-cross img { opacity: 1; left: 0; } .photo-move-cross.photo-img-cross:before { transform: scaleX(0); width: 100%; }
【jQuery】
$(window).on('scroll', function (){ // .photo-img-crossクラスがつけられている要素 var elem = $('.photo-img-cross'); elem.each(function () { var elemTop = $(this).offset().top; var scroll = $(window).scrollTop(); var wh = $(window).height(); // 要素の上部が画面の中央にきたら if(scroll > elemTop - wh + (wh / 2) ) { // .photo-move-crossをつける $(this).addClass("photo-move-cross"); } }); });
表示エフェクトの遷移
表示エフェクトは下のような遷移になります。
【1】
スクロールして対象のイメージがウインドウの中央にきたら、
【2】
【.photo-img-cross img】
画像が『left: -100%;』の位置から、0.7秒かけて『left: 0;』の位置に移動。
画像のアルファ『opacity: 0;』から、0.7秒かけて『opacity: 1;』に変化。
【3】
【.photo-img-cross:before】
画像の上に乗る赤の横幅が『0』から、0.3秒かけて『100%』に『cubic-bezier』で変化。(transition)
【4】
【.photo-img-cross:before】
【1】の0.4秒後に、画像の上に乗る赤の『scaleXが(1)』から、0.5秒かけて『scaleXが(0)』に『cubic-bezier』で変化。(transform)
≫【css】transitionの使い方【各プロパティ サンプルあり】
≫ 【CSSアニメーション】animationプロパティの使い方【サンプルあり】