28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Y a-t-il une façon "correcte" d'attribuer une légende à une image ?

Je peux bien sûr faire:
<img src="pipe.jpg" />
<p class="legend">Ceci n'est pas une pipe</p>

mais d'un point de vue sémantique, c'est pas très clair... en revanche, si j'utilise:
<img src="pipe.jpg" title="Ceci n'est pas une pipe" />

ça me semble correct, mais je ne vois pas comment afficher la légende.
Modifié par elvex (11 Dec 2005 - 02:08)
Bonjour,

Avant tout, la "sémantique" des images va passer obligatoirement par le respect de la norme et donc par l'utilisation de l'attribut alt :


<img src="..." alt="..." />


(Aucun des deux exemples de ton message n'est donc correct)

La contrainte "sémantique" est que l'information véhiculée par l'image, ou la fonction qu'elle assume soient retranscrites textuellement par cet attribut si elles ne le sont pas par ailleurs, et si elles sont nécessaires pour la compréhension du document ou l'utilisation du service.

Partant de là, chaque image est un cas particulier dans un contexte particulier. L'attribut alt pourra contenir par exemple Tableau représentant une pipe, ou bien une pipe, mais également rien (alt="") si cette information est donnée par ailleurs dans le document de manière satisfaisante, ou si elle n'est pas nécessaire.

Pour ce qui est de la légende : la sémantique HTML ne comporte pas d'élément ou d'attribut destiné à cet usage. Et là encore, tout est fonction du contexte.

Dès lors, on peut tout aussi bien utiliser, à la suite de l'image, ou avant celle-ci :
- un paragraphe (élément souvent fourre-tout, mais ce n'est pas bien grave),
- un élément "div" (générique, utilisé faute d'élément spécifique : il est fait exactement pour cela)
- un titre <h> (précédant l'image, dans une série d'images)

Voire même une combinaison d'un de ces éléments et d'un élément <cite> (référence à une ressource, et non citation comme souvent employé à tort), plutôt pour le principe qu'autre chose en l'absence d'exploitation de celui-ci par les "machines" courantes...

En revanche, l'attribut title est à manier avec précautions : il ne sera pas exploité par de nombreux navigateurs (textes par exemple), ne sera pas accessible à certains utilisateurs même dans un navigateur graphique moderne, et ne devrait donc pas véhiculer à lui seul une information vitale. Même s'il est tout à fait possible d'afficher son contenu via la propriété content: attr(title) appliqué à un img:after...
Modifié par Laurent Denis (10 Dec 2005 - 07:08)
Merci pour ces infos !

En fait, après essai, le img:after, ne fonctionne pas.
En cherchant, j'ai fini par trouver : "it would appear that a CSS3 working draft will end the use of the :before and :after pseudo elements with replaced elements such as images." (http://www.no2.org.uk/archives/2004/09/16/mozilla-after-img/)
Modifié par elvex (11 Dec 2005 - 02:31)
Bonjour,

A ce stade de développement du module CSS3 concerné, ce problème d'implémentation du contenu généré via :after et :before appliqué aux contenus remplacés (img) est loin d'être résolu. Et le fait que Mozilla ait actuellement pris une décision dans un sens donné ne préjuge absolument pas de la spécification future Smiley cligne
Modifié par Laurent Denis (11 Dec 2005 - 06:30)