Créer une Tooltip avec uniquement du CSS
1. Préparation du HTML
Notre tooltip va utiliser le principe des data attributes. Attributs disponibles en html du type data-XXX où XXX est le nom de la variable que vous souhaitez créer. Ce système très simple va nous être utile pour y stocker le texte à afficher dans la tooltip. Un avantage de cette solution est que les données de votre tooltip seront stockés au même endroit que la balise déclenchant cette dernière.
On commence donc par écrire notre HTML. Le <span> contenant la class tooltip-link sera utilisé comme ancre pour déclencher la tooltip.
<div class="container">
<div>Hover <span class="tooltip-link" data-tooltip="This is a tooltip test with a huge text, wow that's big!">here</span> to see the result</div>
</div>
2. On y ajoute notre code CSS de base afin d'avoir une belle interface
body {
min-height: 100vh;
background: orange;
color: white;
font-family: "Satoshi", "Inter", sans-serif;
font-size: 20px;
}
.container div {
width: 100%;
max-width: 30%;
margin: 5px;
}
.container {
width: 100%;
height:500px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
text-align: center;
align-items: center;
justify-content: center;
}
.tooltip-link {
cursor: help;
position: relative;
text-decoration: underline;
}
3. Puis enfin la logique de notre tooltip
Pour aller au plus simple, définir l'action sur le pseudo élément :hover et :after permet de garder le code conscis et ne requiert aucun Javascript pour déclencher l'affichage de la tooltip.
Notez dans le code qui suit l'utilisation de la variable
content: attr(data-tooltip);
qui nous permet de récupérer le contenu de l'attribut expliqué en introduction.
.tooltip-link:hover::after {
position: absolute;
opacity: 0;
content: attr(data-tooltip);
bottom: 0%;
animation: fadeIn 100ms cubic-bezier(0.42, 0, 0.62, 1.32) forwards;
left: 50%;
animation-delay: 100ms;
color: #707070;
background: #ffffff;
border-radius: 20px;
min-width: 200px;
max-width; 100%;
font-weight: 700;
text-transform: uppercase;
text-align: center;
font-size: 12px;
padding: 10px;
box-shadow: 0px 10px 33px #3333332e;
}
On y intègre aussi une animation définie par les keyframes ci-dessous et la fonction cubic-bezier donnant un effet de rebondissement à l'arrivée de la tooltip:
@keyframes fadeIn {
0% {
opacity:0;
transform: translate(-50%, 50px);
}
100% {
opacity: 1;
transform: translate(-50%, -30px);
}
}