Guillaume Duverger - Développement & Graphisme - Blog

Vous êtes ici : Accueil > Démonstrations > CSS > Lightbox/slideshow/slider

Carrousel 3D (responsive) en CSS

NB : vous trouverez sur ce blog d'autres exemples de carrousel en CSS.

Code :

HTML


<div class='caroussel_diapo'>
<input checked id="carou_un" name="rotation" type="radio">
<label for="carou_un"></label>
<input id="carou_deux" name="rotation" type="radio">
<label for="carou_deux"></label>
<input id="carou_trois" name="rotation" type="radio">
<label for="carou_trois"></label>
<input id="carou_quatre" name="rotation" type="radio">
<label for="carou_quatre"></label>
<input id="carou_cinq" name="rotation" type="radio">
<label for="carou_cinq"></label>
<input id="carou_six" name="rotation" type="radio">
<label for="carou_six"></label>
<input id="carou_sept" name="rotation" type="radio">
<label for="carou_sept"></label>
<input id="carou_huit" name="rotation" type="radio">
<label for="carou_huit"></label>
<div class="contenu_carou">
<div class="caroussel">
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
<img src="photo.jpg" alt>
</div>
</div>
</div>


CSS


*{box-sizing:border-box}

img{max-width:100%}

.caroussel_diapo input{position:absolute;left:-9999px}
    
.caroussel_diapo{	
position:relative;
text-align: center;
margin:0 auto}


.contenu_carou {
width: 500px;
height: 332px;
margin: 2rem auto;
perspective: 1000px}


.caroussel {
position: relative;
transform-style: preserve-3d;
width: 500px;
height: 332px;
transition: 1s transform}

.caroussel img {
position: absolute;
top: 0;
left: 0;
outline:1px solid transparent;
backface-visibility:hidden;
will-change: transform;
transition: 1s transform
}

	
.caroussel img:nth-child(1){
	
	transform:translate3d(0,0,540px) scale(.8)
	
	}
	
.caroussel img:nth-child(2){
	
	transform:rotateY(45deg) translateZ(540px) scale(.8)
	
	}
	
.caroussel img:nth-child(3){
	
	transform:rotateY(90deg) translateZ(540px) scale(.8)
		
	}
	
.caroussel img:nth-child(4){
	
	transform:rotateY(135deg) translateZ(540px) scale(.8)
	
	}
	
.caroussel img:nth-child(5){
	
	transform:rotateY(180deg) translateZ(540px) scale(.8)
	
	}
	
.caroussel img:nth-child(6){
	
	transform:rotateY(225deg) translateZ(540px) scale(.8)
	
	}
	
.caroussel img:nth-child(7){
	
transform:rotateY(270deg) translateZ(540px) scale(.8)
	
	}
	
.caroussel img:nth-child(8){
	
transform:rotateY(315deg) translateZ(540px) scale(.8)

}

.caroussel_diapo input[type=radio] + label {
cursor: pointer;
background-color: hsl(203,77%,81%);
display: inline-block;
width: 20px;
border-radius: 50%;
height: 20px
	}
	
.caroussel_diapo input[type=radio]:checked + label{
	
	background-color:hsl(203,77%,61%)
		
	}


	

/*gauche*/
.caroussel_diapo #carou_un:checked ~ .contenu_carou .caroussel{

	transform:translateZ(-540px)
	
	}
	
.caroussel_diapo #carou_deux:checked ~ .contenu_carou .caroussel{
	
transform:translateZ(-540px) rotateY(-45deg)
	
	}
	
.caroussel_diapo #carou_trois:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-90deg)
		
	}
	
.caroussel_diapo #carou_quatre:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-135deg)
		
	}
	
.caroussel_diapo #carou_cinq:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-180deg)
		
	}
	
.caroussel_diapo #carou_six:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-225deg)
		
	}
	
.caroussel_diapo #carou_sept:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-270deg)
	
	}
	
.caroussel_diapo #carou_huit:checked ~ .contenu_carou .caroussel{
	
	transform:translateZ(-540px) rotateY(-315deg)
	
	}


/*droite*/
.caroussel_diapo #carou_un:checked ~ .contenu_carou .caroussel img:nth-child(1){
	
	transform:translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_deux:checked ~ .contenu_carou .caroussel img:nth-child(2){
	
transform:rotateY(45deg) translateZ(540px) scale(1)
	
	}
.caroussel_diapo #carou_trois:checked ~ .contenu_carou .caroussel img:nth-child(3){
	
	transform:rotateY(90deg) translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_quatre:checked ~ .contenu_carou .caroussel img:nth-child(4){
	
	transform:rotateY(135deg) translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_cinq:checked ~ .contenu_carou .caroussel img:nth-child(5){
	
	transform:rotateY(180deg) translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_six:checked ~ .contenu_carou .caroussel img:nth-child(6){
	
	transform:rotateY(225deg) translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_sept:checked ~ .contenu_carou .caroussel img:nth-child(7){
	
	transform:rotateY(270deg) translateZ(540px) scale(1)
	
	}
	
.caroussel_diapo #carou_huit:checked ~ .contenu_carou .caroussel img:nth-child(8){
	
	transform:rotateY(315deg) translateZ(540px) scale(1)
		
	}

Support navigateurs :

CSS transforms 3d

Vous rencontrez un problème avec cette démonstration ?

Avant de vous arracher les cheveux ou de crier au scandale, procédez à quelques simples vérifications. Si la démonstration fonctionne ici, il n'y a aucune raison pour qu'il n'en soit pas de même chez vous. De plus vous pouvez télécharger la démonstration. Si vraiment vous coincez, vous pouvez me contacter par mail (contact@guyom-design.com) et je vous aiderai si je le peux. Je ne réponds qu'aux messages respectueux.