最終更新日
記事公開日

【CSSアニメーション】2つ重ねた画像を両方ともスライドショー

お客さん

この前、2つの画像フレームが少しだけ重なるようなレイアウトにフェードエフェクトを付けるCSSアニメーションを教えてもらったんだけど、別の方法を思い付いたの。

今度は、フレームの中の写真が次々にスライドショーで切り替わるようにしたいんだけど、どうすればいい?

隊員1号

了解です!

こちらになります↓

【CSSアニメーション】2つ重ねた画像を両方ともスライドショー

SAMPLE

/* -----------------------------------------------------
              フレーム
----------------------------------------------------- */
#flame {
	width:640px;
	height:480px;
	background:#eee;
	position:relative;
}
#lf {
	position:absolute;
	top:0;
	left:0;
	z-index:30;
	width:70%; /* 448px */
	height:62.3%; /* 299px */
	overflow:hidden;
}
#rf {
	position:absolute;
	bottom:0;
	right:0;
	z-index:20;
	width:59.9%; /* 384px */
	height:53.3%; /* 256px */
	overflow:hidden;
}

/* -----------------------------------------------------
     アニメーション(左)画像3枚
----------------------------------------------------- */
.lf_slide {
	display:flex;
	width:100%;
	list-style-type:none;
	margin:0;
	padding:0;
}
.lf_slide li {
	width:100%;
}
.lf_slide li img {
	height:100%;
	vertical-align:bottom;
}
.lf_slide img {
	animation-name:lfmt;
	animation-duration:8s;
	animation-delay:0s;
	animation-timing-function:ease-in;
	animation-iteration-count:infinite;
}
@keyframes lfmt {

	0% {
		margin-left:0;
	}
	28% {
		margin-left:0;
	}
	33% {
		margin-left:-100%;
	}
	61% {
		margin-left:-100%;
	}
	66% {
		margin-left:-200%;
	}
	95% {
		margin-left:-200%;
	}
	100% {
		margin-left:-300%;
	}

}

/* -----------------------------------------------------
     アニメーション(右)画像2枚
----------------------------------------------------- */
.rf_slide {
	display:flex;
	width:100%;
	list-style-type:none;
	margin:0;
	padding:0;
}
.rf_slide li {
	width:100%;
}
.rf_slide li img {
	height:100%;
	vertical-align:bottom;
}
.rf_slide img {
	animation-name:rfmt;
	animation-duration:8s;
	animation-delay:0s;
	animation-timing-function:ease-in;
	animation-iteration-count:infinite;
}
@keyframes rfmt {

	0% {
		margin-left:0;
	}
	45% {
		margin-left:0;
	}
	50% {
		margin-left:-100%;
	}
	95% {
		margin-left:-100%;
	}
	100% {
		margin-left:-200%;
	}

}
<html>
<body>

	<div id="flame">

		<!-- 左フレーム -->
		<ul id="lf" class="lf_slide">
		<li><img src="./image/momo.jpg"></li>
		<li><img src="./image/muscat.jpg"></li>
		<li><img src="./image/nasi.jpg"></li>
		<li><img src="./image/momo.jpg"></li>
		</ul>

		<!-- 右フレーム -->
		<ul id="rf" class="rf_slide">
		<li><img src="./image/melon.jpg"></li>
		<li><img src="./image/pine.jpg"></li>
		<li><img src="./image/melon.jpg"></li>
		</ul>

	</div>
	
</body>
</html>

※エフェクトの関係上、最後の画像は一枚目と同じ画像を差し込む必要があるのでご注意ください。

画像を横一列に並べて置き、アニメーションで一枚ずつズラして表示する仕組みです。

デバッグの際は「overflow:hidden」を削除してみると、構造が理解しやすいかと思います。

この記事のURLをコピー

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

関連情報

運営者プロフィール
運営者のプロフィール画像
隊員1号

IT系フリーランスとして10年の経験を持つレスキュー隊。HTML・CSS・JS・PHPなど幅広いスキルを持つ。

詳しいプロフィール