Navigation✨ Premium

Annotation Layer

Info-bulles CSS ancrées à des passages surlignés — position absolute au-dessus, flèche pseudo-élément, opacité au survol. Zéro JavaScript.

CSSHoverAnnotation

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Navigation comprend 36 effets, dont 4 gratuits. Découvrir la catégorie →

3 exemples d'usage

Article de fond — Glossaire inline dans un texte technique — Annotation Layer exemple 1

① Article de fond — Glossaire inline dans un texte technique

QuandUn long article, une documentation ou un tutoriel contient des termes métier que tous les lecteurs ne maîtrisent pas.
PourquoiLes annotations flottantes évitent les aller-retours vers un lexique séparé. Le survol révèle la définition sans interrompre la lecture ou quitter la page.
RéglagesCouleur de fond de la bulle (background dans .annotation-note) à adapter à la charte éditoriale ; font-size: .72rem pour rester discret sur mobile.
Documentation API — Paramètres expliqués au survol — Annotation Layer exemple 2

② Documentation API — Paramètres expliqués au survol

QuandUne page de référence API ou de composant liste des paramètres techniques dont certains nécessitent une explication rapide sur le type, la valeur par défaut ou l'effet.
PourquoiL'annotation flottante enrichit la documentation sans alourdir la mise en page — le développeur survole un nom de paramètre et voit immédiatement la précision utile.
Réglageswhite-space: nowrap conservé pour les valeurs courtes ; bulle repositionnée à droite si la doc s'affiche dans un panneau latéral étroit.
Document légal — Révision collaborative de clauses contractuelles — Annotation Layer exemple 3

③ Document légal — Révision collaborative de clauses contractuelles

QuandUn contrat est relu en équipe : plusieurs clauses sont surlignées simultanément et deux reviewers peuvent survoler des passages différents en même temps, déclenchant plusieurs bulles à l'écran sans collision.
PourquoiL'effet illustre une propriété CSS native : <code>z-index: 10</code> sur <code>.annotation-note</code> et <code>pointer-events: none</code> permettent à plusieurs bulles de coexister — chaque marqueur est indépendant. L'empilement vertical ne requiert ni JavaScript ni calcul de position.
Réglagesz-index: 10 sur .annotation-note pour la gestion multi-bulles simultanées ; ajoutez white-space: normal; width: 160px sur .annotation-note si le texte d'une clause dépasse une ligne ; bottom: calc(100% + 10px) pour aérer dans un document à interligne serré.

Comment ça marche

La structure repose sur des span.annotation-marker en display: inline avec position: relative imbriqués dans un bloc de texte. Chaque marqueur contient un span.annotation-note en position: absolute; bottom: calc(100% + 8px) — positionné 8 px au-dessus du mot surligné et centré horizontalement par left: 50%; transform: translateX(-50%).

L'apparition est pilotée par deux propriétés CSS : opacity passe de 0 à 1 et transform: scale de 0,95 à 1 via le sélecteur .annotation-marker:hover .annotation-note, avec transition: opacity .2s, transform .2s. Aucun gestionnaire d'événement JavaScript n'est nécessaire — l'ensemble du comportement est déclaratif.

La flèche pointant vers le bas de la bulle est un pseudo-élément ::after classique : border-color: #fbbf24 transparent transparent crée un triangle CSS en top: 100% de la bulle, centré sur left: 50%.

L'empilage des bulles en cas de marqueurs adjacents est assuré par z-index: 10 sur .annotation-note et pointer-events: none pour éviter que la bulle survolée n'interfère avec les voisins.

Accessibilité

  • Pas de @media (prefers-reduced-motion) dans le code source — les transitions opacity et transform s'exécutent quelles que soient les préférences OS. À compléter manuellement si l'usage l'exige.
  • Accessibilité clavier : l'effet repose sur :hover uniquement — les annotations ne s'affichent pas à la navigation clavier. Absence de :focus-within sur .annotation-marker.
  • Contraste texte/fond dans la bulle : #1a1a2e sur fond #fbbf24 — ratio ≈ 10:1, conforme WCAG AA et AAA.
  • Le surlignage repose sur un border-bottom jaune visible même sans perception des couleurs de fond — l'information n'est pas transmise par la seule couleur.
  • Les lecteurs d'écran peuvent lire le contenu de .annotation-note (pas de display:none), mais l'association entre marqueur et note est implicite — aucun aria-describedby dans le code source.

Compatibilité navigateur

Utilise uniquement position: absolute, transform et transition — propriétés universellement supportées. Aucune dépendance externe.

Chrome 88+✓ Complet
Firefox 87+✓ Complet
Safari 15+✓ Complet
Edge 88+✓ Complet
Mobile iOS✓ Hover absent — bulles invisibles au tactile
Android Chrome✓ Hover absent — même comportement tactile

Sans support des transitions CSS, les info-bulles apparaissent et disparaissent instantanément au survol — fonctionnement préservé, sans animation.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div class="annotation-content">
  Votre texte avec
  <span class="annotation-marker">
    terme annoté
    <span class="annotation-note">
      <span class="fn-num">Note :</span> explication courte
    </span>
  </span>
  , suite du texte.
</div>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
background dans .annotation-marker rgba(251, 191, 36, .2) Fond du surligneur au repos — modifiez la teinte et l'opacité pour s'adapter à votre palette brand.
border-bottom dans .annotation-marker 2px solid #fbbf24 Soulignement du marqueur — à aligner sur la couleur du fond de bulle pour la cohérence visuelle.
background dans .annotation-note #fbbf24 Fond de la bulle tooltip — toute couleur opaque ; ajustez color et la couleur de la flèche ::after en conséquence.
color dans .annotation-note #1a1a2e Couleur du texte dans la bulle — vérifiez le ratio de contraste WCAG avec le fond choisi (minimum 4,5:1).
bottom dans .annotation-note calc(100% + 8px) Écart vertical entre le bas de la bulle et le haut du marqueur — augmentez à calc(100% + 14px) pour aérer.
transition dans .annotation-note opacity .2s, transform .2s Durée et timing de l'apparition — passez à 0s pour supprimer l'animation (compatibilité prefers-reduced-motion).
font-size dans .annotation-note .72rem Taille du texte de la bulle — augmentez à .82rem si le contenu doit être lisible sur mobile ou dans des contextes à fort agrandissement.

FAQ

Non de façon native — les appareils tactiles ne génèrent pas d'événement CSS hover fiable. Sur certains navigateurs, une première tape active la bulle, mais le comportement est incohérent. Pour le tactile, remplacez :hover par une gestion JavaScript qui bascule une classe CSS .active sur le marqueur au clic.
Le code positionne la bulle par bottom: calc(100% + 8px) sans contrainte de bord. Si votre texte est proche du haut ou des bords, la bulle peut dépasser. Solution : ajoutez une media query ou un peu de JavaScript qui bascule vers top: calc(100% + 8px) quand le marqueur est proche du bord supérieur.
Oui — chaque .annotation-marker est indépendant et gère sa bulle via CSS pur. Plusieurs survols simultanés affichent plusieurs bulles en même temps. Le z-index: 10 assure que la bulle active passe au-dessus des marqueurs voisins.