この記事のタイトルを「画像が重なりながら、横からスライドしてきて表示」としていますが、いまいちなんて言っていいのか分からないのですが、「横からイメージがスライドしてきて、すこし遅れてそのイメージに被せるようにイメージがスライドしてきて消える」ようなエフェクトについての説明になります。
まず下記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プロパティの使い方【サンプルあり】
