web-dev-qa-db-fra.com

Une autre balise peut-elle être dans un en-tête HTML 5 (c'est-à-dire h1, h2, h3, etc ...)?

Je ne suis pas sûr de la convention concernant les en-têtes dans HTML 5, mais je voulais savoir si je pouvais ajouter un <small> dans un <h3>, comme ceci (cela pourrait s'appliquer à n'importe quelle balise à l'intérieur des balises de titre):

<h3>Payment details <small>(this is your default card)</small></h3>

Merci beaucoup

18
Shaoz

Oui, ce balisage valide. Vous pouvez le vérifier vous-même sur http://validator.w3.org/

Il faut toutefois savoir que HTML5 a changé la notion des éléments de niveau bloc: https://developer.mozilla.org/en/HTML/Block-level_elements

14
Ian Oxley

Je ne pense pas qu'il y ait de restriction à cela dans la spécification. Seuls les éléments Void ne peuvent pas avoir d'enfants. Voir http://dev.w3.org/html5/markup/syntax.html#void-element

Bien que généralement le H1, le H2, le H3, etc. soient rendus en une seule taille et pour un en-tête similaire à votre "(c'est votre carte par défaut)", vous pouvez utiliser un H inférieur, H4.

6
planetjones

Les spécifications pour les éléments d'en-tête:

dit qu'il a un modèle de contenu en phase:

Content model:
    Phrasing content.

En regardant la partie des spécifications pour la mise en phase du modèle de contenu:

Il dit ceci:

Remarque: la plupart des éléments classés en tant que contenu de formulation ne peuvent contenir que des éléments eux-mêmes classés en tant que contenu de formulation, et non pas de contenu de flux.

En dehors de cela, vous ne pouvez pas mettre un titre dans un autre titre - ceci provient de validateur W3C :

Error Line 1, Column 23: Heading cannot be a child of another heading.

<!DOCTYPE html><h1><h2></h2></h1>

Bien que je ne puisse pas trouver dans les spécifications où il est dit explicitement cela, il existe des restrictions qui semblent plutôt spécifiques. Cela peut donner lieu à un comportement très étrange, tel que le code HTML ci-dessus serait en fait analysé comme

<h1></h1><h2></h2>

par exemple. voir ce SOq pour un exemple de problèmes indirects pouvant être causés:

Juste au cas où quelqu'un se heurterait à cela ...

5
icyrock.com

Je ne pense pas qu'il y ait de restriction à cela dans la spécification. Seuls les éléments vides ne peuvent pas avoir d'enfants. Voir http://dev.w3.org/html5/markup/syntax.html#void-element

Un élément vide est un élément dont le modèle de contenu ne lui permet jamais d'avoir du contenu, quelles que soient les circonstances. Les éléments Void peuvent avoir des attributs.

Voici une liste complète des éléments void en HTML:

area, base, br, col, command, embed, hr, img, input, keygen, link,
meta, param, source, track, wbr

Bien que généralement les h1, h2, h3, etc. seraient rendus dans une taille unique. Pour un en-tête similaire à votre "(c'est votre carte par défaut)", vous pouvez utiliser un en-tête plus petit, par exemple. h4.

0