Info-bulles


Vue d'ensemble

Les info-bulles permettent d'afficher des informations complémentaires sur un élément et de manière un peu plus détaillée lorsque cet élément est survolé ou reçoit le focus. Une info-bulle devient généralement visible, après un court délai généralement de, une à cinq secondes

Pour être le plus accessible possible, les info-bulles fonctionnent de pair avec les attributs aria-label. Il suffit, pour afficher, au survol, le contenu de l'attribut aria-label de lui adjoindre l'attribut data-tooltip. Celui-ci prend en paramètre la position où sera situé l'info-bulle. Les paramètres possibles sont top, left, bottom et right

Le délai d'apparition est configurable via la variable CSS locale --tooltip-delay. Par défaut le temps d'attente est de 1 seconde.

top left right bottom
<span aria-label="Tooltip top" data-tooltip="top">top</span>
<span aria-label="Tooltip left" data-tooltip="left" style="--tooltip-delay:0;">left</span>
<span aria-label="Tooltip right" data-tooltip="right" style="--tooltip-delay:3s;">right</span>
<span aria-label="Tooltip bottom" data-tooltip="bottom">bottom</span>

Par défaut, la taille des info-bulles, est égal à celle de son contenu. Elle est comprise entre un minimum de 6em et un maximum de 10em. Ces bornes, peuvent être définie via les variables locale --tooltip-size-small et --tooltip-size-large. Si le texte est plus long, celui-ci sera automatiquement tronqué.

La taille des info-bulles peut-être définie via l'attribut data-tooltip-size et le texte passe automatiquement à la ligne en suivant une césure sur les mots.

Cet attribut supporte un des paramètres suivant :

  • fit : La largeur maximale, sera celui de l'élément possédant l'info-bulle
  • small : La largeur sera réduite à la taille contrôlée par la variable --tooltip-size-small par défaut 6em
  • medium : La largeur sera de la taille contrôlée par la variable --tooltip-size-medium par défaut 10em
  • large : La largeur sera de la taille contrôlée par la variable --tooltip-size-medium par défaut 16em
Normal Info-bulle : fit Info-bulle : small Info-bulle : medium Info-bulle : large Info-bulle : perso Info-bulle : perso
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip="top">Normal</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip-size="fit" data-tooltip="top">Info-bulle : fit</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip-size="small" data-tooltip="bottom">Info-bulle : small</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip-size="medium" data-tooltip="top">Info-bulle : medium</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip-size="large" data-tooltip="bottom">Info-bulle : large</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip-size="medium" data-tooltip="bottom" style="--tooltip-size-medium:12em;">Info-bulle : perso</span>
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip="top" style="--tooltip-size-large:8em;">Info-bulle : perso</span>

Les info-bulles peuvent être affichée en permanence, il suffit d'ajouter l'attribut data-tooltip-visible

toujours visible
<span aria-label="Lorem ipsum dolor sit amet, consectetur adipisicing elit." data-tooltip="right"  data-tooltip-size="fit" data-tooltip-visible>toujours visible</span>

Pour être accessible, par les technologies d'assistance, Les éléments avec le rôle d'info-bulle doivent être référencés via l'utilisation de aria-dedicatedby. Celui-ci est placé dans l'élément propriétaire. L'élément qui sert de conteneur à l'info-bulle doit contenir le role role="tooltip".

Il est à noter que l'attribut aria-label ne peut pas contenir de code HTML. Pour palier à cette problématique, le contenu devra être englobé dans un élément enfant désigné par le role role="tooltip".

En sus, Sass Swing met à disposition des classes CSS équivalente aux attributs pour gérer l'affichage.

  • La classe .tooltip pour définir l'élément propriétaire de l'info-bulle.
  • Les classes .tooltip--top, .tooltip--left, .tooltip--bottom et .tooltip--right pour définir la position.
  • Les classes .tooltip--fit, .tooltip--small, .tooltip--medium et .tooltip--large pour définir la dimension.

Néanmoins, Étant donné que le contenu de l'info-bulle ne reçoit jamais le focus et n'est pas dans l'ordre de tabulation, une info-bulle ne peut pas contenir d'éléments interactifs tels que des liens, des entrées ou des boutons. L'utilisateur ne pourra pas agir avec eux.

On peut également forcer l'affichage du contenu, comme plus haut, avec l'utilisation de l'attribut data-tooltip-visible dans l'élément propriétaire.

Lorem picsum
Lorem picsum
<div role="button" class="tooltip tooltip--top tooltip--large" style="--tooltip-size-large: 240px" aria-describedby="tooltipContent1" tabindex="0">
	Lorem picsum
	<div id="tooltipContent1" role="tooltip" class="flex flex--column flex--center" style="--p:.5em">
		<h4 style="--ta:center;">Random Lorem picsum</h4>
		<img src="https://picsum.photos/240/160/" alt="picsum" width="240" height="160"/>
	</div>
</div>

<div role="button" class="tooltip tooltip--right tooltip--fit" data-tooltip-visible style="--tooltip-size-medium: 240px" aria-describedby="tooltipContent2" tabindex="0">
	Lorem picsum
	<div id="tooltipContent2" role="tooltip" class="flex flex--column flex--center" style="--p:.5em">
		<h5 style="--ta:center;">Random Lorem picsum</h5>
		<img src="https://picsum.photos/240/160/" alt="picsum" width="240" height="160"/>
    <a href="https://picsum.photos">Picsum Photos</a>
	</div>
</div>

Personnalisation

Uniformisation et améliorations prévue