Steve TENZA
Intervient pour votre site internet
Facebook Me contacter Cookie
Télécharger
Noter:
Ajouté/Modifié le 2024-03-31
Visionné 1668 fois

Effet de Vague au Survole de la Souris avec CSS et JavaScript

Description

Vous voulez ajouter une touche d'interactivité à vos boutons sur votre site web ? L'effet de vague au survol de la souris est une manière élégante et ludique d'animer vos éléments interactifs. Dans cet article, nous allons explorer comment créer cet effet en combinant CSS et JavaScript.

Cet effet au survol de la souris crée une animation fluide qui émerge du point de la souris. Nous utiliserons des propriétés CSS telles que transform et animation pour créer l'effet, ainsi que JavaScript pour gérer les événements de survol de la souris.

Tester le résultat


Définir un bouton avec effet

Ajoutez class="btn_animation" à votre bouton.
<a class="btn_animation" href="votre_page.html">Survolez-moi !</a>

Styles CSS

Ajoutons maintenant les styles CSS pour notre bouton et l'effet de vague.

.btn_animation {
padding:10px 20px;
border-radius:40px;
position:relative;
background: red;
display: inline-block;
overflow: hidden;/*permet que l'effet ne sorte pas de .btn_animation*/
cursor:pointer;
}
.btn_content {
position:relative;
z-index:1;/*positionne le texte en dessus de l'effet*/
}
.btn_effect {
position:absolute;
width: 50px;
height: 50px;
background: white;
border-radius: 50%;
z-index:0;/*positionne l'effet en dessous du texte*/
}
.btn_animation:hover > .btn_effect {
animation:btn_effect 0.9s linear forwards;/*forwards permet de terminer l'effet sur la dernière commande : background:transparent;*/
}
@keyframes btn_effect {
0% {
transform:scale(0);
background:white;
}
100% {
transform:scale(10);
background:transparent;
}
}

JavaScript

Maintenant, ajoutons le script JavaScript qui gère les événements de survol de la souris et crée l'effet de vague (aussi appelé wave effect, effet de lumière ou effet de radar). Le script détecte quand la souris survole le bouton et crée dynamiquement l'effet de vague à partir du point de survol, avec cette méthode, pas besoin d'ajouter du code HTML à l'intérieur de notre bouton, j'ai simplifié cela pour vous. L'effet et son code HTML disparaîtra lorsque la souris quitte le bouton. Voici le code :

//parcours tous les boutons qui ont la classe .btn_animation
//pour capturer les événement de la souris ("survolage" (mouseenter) et "quitte la zone" (mouseleave))
var btns_animation = document.querySelectorAll(".btn_animation");
btns_animation.forEach((btn)=>{

//la souris survole un bouton, l'événement mouseenter est déclenché
//(e) contient notre événement
//e.layerX et e.layerY est la position de notre souris, le départ de notre effet
btn.addEventListener("mouseenter", (e)=>{

//positionne le texte du bouton dans un span .btn_content pour qu'on puisse le mettre au dessus de l'effet
//si le texte n'est pas déjà dans le span .btn_animation, on l'ajoute
if(btn.getElementsByClassName("btn_content").length == 0)
btn.innerHTML = `<span class="btn_content">${btn.innerHTML}</span>`;

//place le span .btn_effect qui fait l'effet
//'afterbegin' vient positionner .btn_effect avant tout autre élément dans .btn_animation (n'a pas d'importance ici car on utilise la propriété CSS z-index pour le position en dessous du texte)
//l'utilisation de insertAdjacentHTML est plus rapide que innerHTML
btn.insertAdjacentHTML('afterbegin', `<span class="btn_effect" style="left:${e.layerX-25}px;top:${e.layerY-25}px"></span>`);

});

//la souris quitte le bouton, on supprime l'effet (le span .btn_effect)
//le fait de le supprimer relancera l'effet CSS quand on le remettra
btn.addEventListener("mouseleave", ()=>{

//supprime l'effet si le span .btn_effect existe (ou plusieurs, par une erreur quelconque)
btn.querySelectorAll(".btn_effect").forEach((elm)=>{
elm.remove();
});

});
});
Tester le résultat


Conclusion

Félicitations ! Vous avez maintenant un bouton avec un effet de vague au survol de la souris sur votre site web. Cet effet ajoute une nouvelle dimension interactive et attrayante à vos éléments HTML en combinant CSS pour l'attrait et JavaScript pour la logique interactive.

Amusez-vous à explorer d'autres effets et techniques pour continuer à enrichir votre site avec des fonctionnalités interactives.

Le style du bouton lui-même est basique pour l'exemple et peut être ajusté selon vos préférences, comme un background radial-gradient pour rester dans l'esprit effet de vague en cercle et un box-shadow CSS lors du survol, par exemple.

J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail, un simple don ou mettre une note est grandement apprécié.
Votre réussite en ligne commence ici

Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.

Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.

Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :

Demander un devis
Réponse rapide !

Vous recherchez un script précis ?

Dites-moi ce dont vous avez besoin, je peux développer le script demandé et vous envoyer un mail dès qu'il est dispo !

🔔 Vous pouvez laisser votre mail pour recevoir les nouveaux scripts. Pas de pub, pas de tracas. Vous êtes libre de le supprimer à tout moment.

Je prends en compte toutes les demandes. Les idées les plus populaires passent en priorité et seront publiées dès qu'elles seront prêtes. 2856 demandes reçues.

Si vous avez un projet en tête, je vous suggère de me contacter directement pour en discuter.

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo1memo2
Commenter
Ajoutez un commentaire, soyez le premier !

Retour à la liste des scripts

Un site à créer ?
Contactez-moi