CSSだけで3Dなカルーセル

Ads

Result


数年前に見かけた懐かしい感じの3Dなカルーセルです。
CSSだけで出来る時代になりましたね。

css

#slideshow {/*全体*/
	margin: 0 auto;
	padding-top: 50px;
	height: 600px;
	width: 100%;
	background-color: #ddd;
	box-sizing: border-box;
}

.entire-content {/*カルーセルの見栄え。perspectiveで奥行きを設定する*/
	margin: auto;
	width: 190px;
	perspective: 1000px;
	position: relative;
	padding-top: 80px;
}

.content-carrousel {/*各画像を包括、アニメーションを設定*/
	width: 100%;
	position: absolute;
	float: right;
	animation: rotar 15s infinite linear;
	transform-style: preserve-3d;
}

.content-carrousel:hover {/*ホバーしたらアニメーションを停止してポインター表示*/
	animation-play-state: paused;
	cursor: pointer;
}

.content-carrousel figure {/*各画像設定*/
	width: 100%;
	height: 120px;
	border: 1px solid #3b444b;
	overflow: hidden;
	position: absolute;
}

/*個々の画像設定*/
.content-carrousel figure:nth-child(1) {
	transform: rotateY(0deg) translateZ(300px);
}
.content-carrousel figure:nth-child(2) {
	transform: rotateY(40deg) translateZ(300px);
}
.content-carrousel figure:nth-child(3) {
	transform: rotateY(80deg) translateZ(300px);
}
.content-carrousel figure:nth-child(4) {
	transform: rotateY(120deg) translateZ(300px);
}
.content-carrousel figure:nth-child(5) {
	transform: rotateY(160deg) translateZ(300px);
}
.content-carrousel figure:nth-child(6) {
	transform: rotateY(200deg) translateZ(300px);
}
.content-carrousel figure:nth-child(7) {
	transform: rotateY(240deg) translateZ(300px);
}
.content-carrousel figure:nth-child(8) {
	transform: rotateY(280deg) translateZ(300px);
}
.content-carrousel figure:nth-child(9) {
	transform: rotateY(320deg) translateZ(300px);
}
.content-carrousel figure:nth-child(10) {
	transform: rotateY(360deg) translateZ(300px);
}

.shadow {
	position: absolute;
	box-shadow: 0px 0px 20px 0px #000;
	border-radius: 1px;
}

.content-carrousel img {
	image-rendering: auto;
	transition: all 300ms;
	width: 100%;
	height: 100%;
}

.content-carrousel img:hover {/*画像ホバーでズーム*/
	transform: scale(1.2);
	transition: all 300ms;
}

@keyframes rotar {/*カルーセルのアニメーション*/
	from {
		transform: rotateY(0deg);
	}
	to {
		transform: rotateY(360deg);
	}
}

html

<section id="slideshow">
	<div class="entire-content">
		<div class="content-carrousel">
			<figure class="shadow"><img src="https://picsum.photos/200/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/201/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/202/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/203/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/204/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/205/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/206/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/207/300"/></figure>
			<figure class="shadow"><img src="https://picsum.photos/208/300"/></figure>
		</div>
	</div>
</section>

via

3D Slider | Pure CSS