5568 sujets

Sémantique web et HTML

Bonjour,

Suite à cette article (http://www.alsacreations.com/article/lire/750-HTML5-nouveautes.html) et à plusieurs autre lecture sur le sujet, je me permet de vous demander quelques éclaircissement sur le nouveau schéma de structuration des données.

Comment sait-on à quelle catégorie les éléments appartiennent-ils ?
Chaque élément n'a plus un comportement "block" ou "inline" par défaut ?


Merci par avance pour vos explications.
Ah, vieux serpent de mer.

Si on résume:
- HTML4 parle d'éléments de niveau bloc et d'éléments de niveau texte (et glisse peut-être le terme inline, je sais plus).
- Ces notions sont rendues obsolètes par la propriété display en CSS 2.
- HTML5 ne cherche pas à classer les éléments en fonction d'un rendu visuel particulier. La spec regroupe un certain nombre d'éléments dans une partie nommée «4.6 Text-level semantics», mais pas par rapport à l'ensemble des autres éléments qui seraient «block-level»; c'est juste un classement logique.

Raphael Lardy a écrit :
Chaque élément n'a plus un comportement "block" ou "inline" par défaut ?

Ce n'était déjà pas le cas en HTML4, vu que nombre d'éléments n'étaient pas dans l'une ou l'autre catégorie.
Merci Florent.

Oui, je sais, je suis un newbie ... mais un newbie qui essaye de comprendre.

Les "Text-level semantics" ont du coup un comportement texte (inline) ? Pour que je comprenne, prenons l'élément <a>. Utilisé tout seul, il aura un comportement "texte", mais utilisé en container d'un paragraphe (par exemple), il aura un comportement "block". Je vois le rendu visuel en lui mettant une bordure (par exemple).

Pour IE, faut-il mettre un "display:block" à l'élément <a> dans le 2ème cas ?
Raphael Lardy a écrit :
Les "Text-level semantics" ont du coup un comportement texte (inline) ?

"Text-level semantics" c'est juste une manière d'organiser la liste des éléments dans la spécification de manière un peu logique. Il y a une autre section pour les éléments de formulaire, une autre pour les conteneurs SECTION, ARTICLE et compagnie, etc. Ça ne dit rien d'autre. En particulier, ça ne dit rien du tout sur la valeur de propriété CSS display que les navigateurs peuvent ou devraient utiliser.

Raphael Lardy a écrit :
Pour que je comprenne, prenons l'élément <a>. Utilisé tout seul, il aura un comportement "texte", mais utilisé en container d'un paragraphe (par exemple), il aura un comportement "block".

OK, prenons cet élément. Alors c'est simple, HTML5 ne dit pas comment cet élément doit s'afficher. HTML5 s'occupe très peu de dire comment ça doit s'afficher, parce que... ben c'est pas son rôle.

Concrètement, les navigateurs vont utiliser une feuille de styles par défaut (propre à chaque navigateur, mais les différences, au moins pour les éléments HTML4, ne sont pas énormes). Dans les navigateurs, un élément A aura (par défaut) "inline" comme valeur de la propriété CSS display. Si tu mets du texte ou des DIV dans ton élément A, ça ne changera rien à ça. Ton élément A reste en display:inline, sauf si tu demandes explicitement un style différent.

Donc j'ai envie de dire que si tu veux du display:block pour ton élément A, il faut le déclarer explicitement, pour tous les navigateurs.