Pas de CSS/JavaScript injecté en ligne, le DOM reste propre, ce qui cool pour le responsive/CSP.
C’est (hautement) personnalisable
Vous pouvez le styler/animer comme vous voulez ;
Vous pouvez créer un namespace pour les classes générées si vous avez besoin de différents styles dans la même page ;
Chaque aspect du script peut être personnalisé, si vous transpilez le script en ES5, ce sera compatible IE9+.
Libre et sous une license permissive
Pas de problème : c’est placé sous licence MIT, donc c’est libre, open-source et vous pouvez faire ce que vous voulez avec, incluant une utilisation commerciale. Cette note de permission doit être incluse dans toutes les copies complètes ou partielles du script.
Cependant, il n’est pas interdit de me dire que vous l’avez utilisé, ou de m’envoyer un petit « merci ». ;)
Léger
19kb (développement, lisible par les humains) ;
~7kb (minifié, lisible par des machines) ;
~2kb minifié et gzippé (lisible par… des mutants ‽‽)
Grosso modo, le script entoure chaque class="js-tooltip" d’un span class="<your-prefix-class>-container". Quand un tooltip est activé, il va insérer un élément dialog juste après l’élément cliqué (dans le conteneur), mettre le focus dans le tooltip et piège le focus clavier dedans. Quand vous voulez le fermer, le focus clavier est redonné à l’élément qui avait ouvert le tooltip.
Pour les utilisateurs de souris, il est possible de cliquer en dehors du tooltip pour le fermer. Il est également possible de le clore en utilisant Esc, ou en utilisant Entrée ou Espace si vous êtes sur le bouton de fermeture..
Si vous n’activez jamais de tooltip, ce ne sera nulle part dans le code.
Télécharger le script
Vous pouvez utilisez la commande npm : npm i van11y-accessible-modal-tooltip-aria.
Vous pouvez aussi utiliser Bower : bower install van11y-accessible-modal-tooltip-aria.
Option et attributs
Utilisez les attributsdata-tooltip-text ou data-tooltip-content-id pour mettre du contenu dans le tooltip.
Mettez class="js-tooltip" sur un button ou autre pour activer le script.
Attribut data-tooltip-prefix-class : le préfixe de toutes les classes du tooltip.
Attribut data-tooltip-text : le texte du tooltip (sera mis dans un élément p).
Attribut data-tooltip-content-id : l’id du contenu (caché) dans la page qui sera mis dans le tooltip.
Attribut data-tooltip-title : le titre principal du tooltip.
Attribut data-tooltip-close-text : le texte du bouton de fermeture du tooltip.
Attribut data-tooltip-close-title : l’attribut title du bouton de fermeture.
Attribut data-tooltip-close-img : le chemin vers une image valide pour le bouton de fermeture.
Souvenez-vous qu’il existe des démos, ce sera plus simple à comprendre : Démo de tooltip modal
Le script est lancé au chargement de la page. Si vous avez besoin de l’exécuter sur du contenu généré en AJAX, vous pourrez utiliser par exemple sur <div id="newContent">la source du tooltip modal</div> :
Voici les styles utilisés pour la démo :
(j’ai utilisé data-tooltip-prefix-class="simple-tooltip", mais vous pouvez utiliser ce que vous voulez pour styler)
Voici les styles utilisés pour le quatrième exemple de la démo, j’ai utilisé data-modal-prefix-class="fixed-tooltip" pour namespacer les éléments, donc chacun commencera par .fixed-tooltip- :