web-dev-qa-db-fra.com

Est-il correct d'utiliser la balise alt pour un lien d'ancrage?

Est-il correct d'utiliser la balise alt pour un lien d'ancrage, quelque chose comme

<a href="#" class="test" alt="Something" src="sfasfs" ></a>
116
user2067736

La meilleure solution à ce problème est de consulter les spécifications officielles:

  1. aller à la spécification: https://www.w3.org/TR/html5/

  2. rechercher "a element": https://www.w3.org/TR/html5/text-level-semantics.html#the-a-element

  3. cochez "Attributs de contenu", qui répertorie tous les attributs autorisés pour l'élément a:

    • Attributs globaux
    • href
    • target
    • download
    • rel
    • hreflang
    • type
  4. vérifiez les "attributs globaux" liés: https://www.w3.org/TR/html5/dom.html#global-attributes

Comme vous le verrez, l'attribut alt n'est pas autorisé sur l'élément a.
Vous remarquerez également que l’attribut src n’est pas autorisé non plus.

Par en validant votre HTML , de telles erreurs vous sont signalées.


Notez que ce qui précède s’applique à HTML5, qui est norme HTML du W3C de 2014 . En 2016, HTML 5.1 est devenu le prochain standard HTML . La recherche des attributs autorisés fonctionne de la même manière. Vous verrez que l'élément a peut avoir un autre attribut en HTML 5.1: rev.

Vous pouvez trouver toutes les spécifications HTML (y compris la norme la plus récente) sur W3C’s HTML Statut actuel .

123
unor

Pour les ancres, vous devriez utiliser le titre à la place. alt n'est pas valide atribute de a. Voir http://w3schools.com/tags/tag_a.asp

55
tomis

"title" est largement implémenté dans les navigateurs. Essayer:

<a href="#" title="hello">asf</a>
23
Pablo Pazos

Non, un attribut alt (ce serait un attribut et non une balise) n'est pas autorisé pour un élément a dans une spécification ou un brouillon HTML. Et il ne semble pas non plus être reconnu par aucun navigateur.

La raison pour laquelle les gens essaient de l’utiliser est donc un peu mystérieuse, mais l’explication probable est qu’ils le font en mode analogique avec l’attribut alt pour les éléments img, s’attendant à voir une "info-bulle" au passage de la souris. Il y a deux problèmes avec cela. Tout d'abord, chaque élément possède ses propres attributs, définis dans les spécifications de chaque élément. Deuxièmement, le rendu "infobulle" des attributs alt dans certains navigateurs anciens est/était une bizarrerie ou même un bogue, plutôt que quelque chose d’attendu; l'attribut alt est censé être présenté à l'utilisateur si et seulement si l'image elle-même n'est pas présentée, pour une raison quelconque.

Pour créer une "info-bulle", utilisez plutôt l'attribut title ou, bien mieux encore, Google pour "info-bulles CSS" et utilisez les info-bulles CSS de votre choix (elles peuvent être qualifiées de "calques" masqués qui deviennent visibles sur passer la souris).

6
Jukka K. Korpela

Vous devez utiliser l'attribut title pour les balises d'ancrage si vous souhaitez appliquer les informations descriptives de la même manière que vous le feriez pour un attribut alt. L'attribut title est valide sur les balises d'ancrage et n'a pas d'autre objectif que de fournir des informations sur la page liée.

Le W3C recommande que la valeur de l'attribut title corresponde à la valeur du titre du document lié, mais ce n'est pas obligatoire.

http://www.w3.org/MarkUp/1995-archive/Elements/A.html


Sinon, et probablement plus avantageux, vous pouvez utiliser l'attribut d'accessibilité ARIA aria-label (à ne pas confondre avec aria-labeledby). aria-label remplit la même fonction que l'attribut alt pour les images mais pour les éléments non-image et inclut une mesure d'optimisation depuis votre optimisation pour les lecteurs d'écran.

http://www.w3.org/WAI/GL/wiki/Using_aria-label_to_provide_labels_for_objects


Si vous souhaitez toutefois décrire une balise d'ancrage, il est généralement approprié d'utiliser la balise rel ou rev, mais que vous soyez limité à des valeurs spécifiques, elles ne doivent pas être utilisées pour des descriptions lisibles par l'homme.

Rel sert à décrire la relation entre la page liée et la page actuelle. (par exemple, si la page liée est la suivante dans une série logique, ce sera rel = next)

L'attribut rev est essentiellement la relation inverse de l'attribut rel. Rev décrit la relation entre la page en cours et la page liée.

Vous pouvez trouver une liste de valeurs valides ici: http://microformats.org/wiki/existing-rel-values

5
davidcondrey

J'ai utilisé le titre et cela a fonctionné!

L'attribut title donne le titre du lien. À une exception près, c'est purement consultatif. La valeur est text. L'exception concerne les liens de feuille de style, où l'attribut title définit d'autres ensembles de feuilles de style.

<a class="navbar-brand" href="http://www.alberghierocastelnuovocilento.gov.it/sito/index.php" title="sito Dell'Istituto Ancel Keys">A.K.</a>
4
Giovanni Python