Par Malik • 27 July 2024
Dans cet article, nous allons explorer comment créer un carrousel vertical en HTML, CSS et JavaScript. Ce carrousel permet de faire défiler des images et du texte associés verticalement, avec des boutons pour naviguer vers le haut et vers le bas.
Le code HTML structure la page et intègre les différents éléments nécessaires au carrousel :
N'oublions pas la ligne
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"/> pour gerer les flèches des balises <i><i/>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"
/>
<link rel="stylesheet" href="styles.css" />
<title>Carousel vertical</title>
</head>
<body>
<div class="carousel-container">
<div class="text-slide">
<div style="background-color: #233451">
<h1>Meteore</h1>
<p>Your name</p>
</div>
<div style="background-color: #000001">
<h1>Gojo Satoru</h1>
<p>Jujutsu Kaisen</p>
</div>
<div style="background-color: #131d2f">
<h1>Sasuke Uchiwa</h1>
<p>Naruto Shippuden</p>
</div>
<div style="background-color: #ff881a">
<h1>Rengoku</h1>
<p>Demon slayer</p>
</div>
<div style="background-color: #040b09">
<h1>Deku</h1>
<p>My Hero Academy</p>
</div>
</div>
<div class="image-slide">
<div style="background-image: url(img/deku.png)"></div>
<div style="background-image: url(img/rengoku.png)"></div>
<div style="background-image: url(img/sasuke.jpg)"></div>
<div style="background-image: url(img/gojo.png)"></div>
<div style="background-image: url(img/your-name.png)"></div>
</div>
<div class="buttons-action">
<button class="button-up"><i class="fas fa-arrow-up"></i></button>
<button class="button-down"><i class="fas fa-arrow-down"></button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
Les balises <!DOCTYPE html>, <html>,
<head>, <body> et <meta>
sont utilisées pour structurer la page HTML et définir les métadonnées.
Le lien vers Font Awesome pour les icônes et le lien vers notre fichier CSS
styles.css sont inclus dans la section <head>.
La div avec la classe carousel-container contient tout le carrousel.
La div avec la classe text-slide contient plusieurs divs,
chacune avec un titre <h1> et un paragraphe <p>,
représentant le texte associé à chaque image.
La div avec la classe image-slide contient plusieurs divs
avec l'attribut background-image pour afficher les images correspondantes.
Les boutons button-up et button-down permettent de naviguer entre les slides.
Le code CSS est utilisé pour styliser le carrousel, définir les positions des éléments, et ajouter des transitions pour les effets de défilement :
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
height: 100vh;
font-family: "Eras ITC", sans-serif;
}
.carousel-container {
position: relative;
overflow: hidden;
width: 100vw;
height: 100vh;
}
.text-slide {
position: absolute;
width: 35%;
height: 100%;
top: 0;
left: 0;
}
.text-slide > div {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
color: #fff;
}
.text-slide h1 {
font-size: 40px;
margin-bottom: 15px;
}
.text-slide p {
font-size: 20px;
}
.image-slide {
height: 100%;
position: absolute;
top: 0;
left: 35%;
width: 65%;
}
.image-slide > div {
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
height: 100%;
width: 100%;
}
.buttons-action button {
position: absolute;
left: 35%;
top: 50%;
z-index: 100;
color: #7a9687;
background-color: #f3f3f3;
border: none;
border-radius: 5px;
padding: 10px;
cursor: pointer;
}
.button-up {
transform: translateY(-50%);
}
.button-down {
transform: translateY(50%);
}
Les styles généraux définissent la police, les marges, les remplissages, et l'affichage du carrousel dans la fenêtre du navigateur.
La carousel-container occupe toute la largeur et la hauteur de la fenêtre
du navigateur, avec le contenu défilant en utilisant les propriétés overflow
et position.
Les styles appliqués à la div avec la classe text-slide
assurent que le texte est centré verticalement et horizontalement.
Les images sont définies comme arrière-plan et ajustées pour remplir le conteneur sans répétition.
Les boutons sont positionnés pour permettre la navigation entre les slides.
Le code JavaScript est utilisé pour gérer le défilement des slides en réponse aux interactions de l'utilisateur :
const textSlides = document.querySelector('.text-slide');
const imageSlides = document.querySelector('.image-slide');
const buttonUp = document.querySelector('.button-up');
const buttonDown = document.querySelector('.button-down');
let index = 0;
function updateSlides() {
textSlides.style.transform = `translateY(-${index * 100}%)`;
imageSlides.style.transform = `translateY(-${index * 100}%)`;
}
buttonUp.addEventListener('click', () => {
index = (index > 0) ? index - 1 : textSlides.children.length - 1;
updateSlides();
});
buttonDown.addEventListener('click', () => {
index = (index < textSlides.children.length - 1) ? index + 1 : 0;
updateSlides();
});
Les variables sont définies pour sélectionner les éléments HTML pertinents, et l'index est utilisé pour suivre la position actuelle du carrousel.
La fonction updateSlides met à jour la position des slides
en fonction de l'index courant.
Les écouteurs d'événements sont ajoutés aux boutons pour changer l'index
et appeler la fonction updateSlides lorsque les boutons sont cliqués.
Le carrousel vertical est un excellent ajout à tout site web qui souhaite afficher du contenu de manière dynamique et engageante. Grâce à l'intégration de HTML, CSS, et JavaScript, vous pouvez créer un carrousel qui offre une expérience utilisateur fluide et visuellement attrayante.
En utilisant les techniques présentées dans cet article, vous pouvez facilement personnaliser le carrousel pour qu'il s'adapte à votre design spécifique, qu'il s'agisse d'ajuster les couleurs, les tailles ou les animations. N'hésitez pas à expérimenter avec différents styles et transitions pour créer un carrousel unique qui répond à vos besoins.
Pour aller plus loin, vous pourriez explorer l'ajout de fonctionnalités supplémentaires comme des indicateurs de diapositive ou des animations plus complexes. La flexibilité du carrousel vertical vous permet de l'adapter à une variété d'applications, que ce soit pour des galeries d'images, des témoignages ou des présentations de produits.Petit défis... à vous de gerer le mode responsive ! Pour la Demo, veuillez tourner votre téléphone
Concevez un site web moderne qui attire et engage vos visiteurs dès la première vue.
Obtenez votre devis personnalisé