¿Los elementos de encabezado son bloques o elementos en línea?

3 minutos de lectura

Avatar de usuario de Chris S
cris s

¿Es correcto cambiar el color del texto dentro de un elemento H1, H2, H3, H4, H5 o H6? ¿Son elementos a nivel de bloque?

Por ejemplo:

<h1><span style="color:#ABAB">#500</span> Hello world</h1>

Avatar de usuario de Oded
Odado

Son elementos de bloque.

Si miras el HTML 4.01 estricto DTD:

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

Por lo tanto, todos se definen como %heading entidades, que a su vez forman parte del %block entidades.

En cuanto a la pregunta sobre si puede cambiar el color, eso es solo estilo y está bien, aunque lo haría en un archivo CSS, no en línea:

H1, H2, H3, H4, H5, H6 {
   color: #ccccc;
}

  • Me gustó la forma en que agregó html DTD para explicar la respuesta.GR8

    – sushil bharwani

    28 de octubre de 2010 a las 10:18

  • Solo estaba tratando de mantener el ejemplo simple, así que usé CSS en línea. Intenté buscar en Google primero, pero no pude encontrar mi respuesta hojeando w3.org/TR/REC-html40/struct/global.html#h-7.5.5

    – Chris S.

    28 de octubre de 2010 a las 10:25

  • @Chris S – no hay problema. Sin embargo, solo puedo continuar con lo que está en la pregunta;)

    – Oded

    28 de octubre de 2010 a las 10:26

  • Gran respuesta por cierto y es interesante que tengan tokens para categorías de otros elementos dentro de la definición del bloque

    – Chris S.

    28 de octubre de 2010 a las 10:27

Avatar de usuario de Soarabh
Soarabh

Sí, esta es la forma correcta, si desea utilizar CSS en línea. De lo contrario, utilice un class atributo decir:

<h1 class="title"><span>#500</span> Hello world</h1>

Ahora el CSS es:

h1.title span {
   color: #ababab;
}

de nuevo, si <h1> a <h6> son elementos a nivel de bloque.

Avatar de usuario de Antonija Šimić
Antonija Simic

La forma más fácil de averiguar si un elemento es un elemento a nivel de bloque o en línea es ponerle un borde.

HTML

<h1>Heading 1</h1>
<span>Span</span>

CSS

h1 {
   border: 2px solid green;
}

span {
   border: 2px solid blue;
}

Más ejemplos en JSFiddle.

avatar de usuario de red-X
X roja

Sí, todos los encabezados son elementos a nivel de bloque.

En otra nota, #ABAB no es un color válido.

Sí un span dentro de una etiqueta h1 está permitido. Como puedes ver en el Página de referencia W3C para la etiqueta h1:

Contenidos permitidos: contenido de fraseo

Y el contenido de la frase es texto normal, así como su span elemento (y varios otros elementos como se puede ver en este página de referencia para frasear contenido.

Ah, sí, y las etiquetas de encabezado son elementos de bloque.

Avatar de usuario de Kevin M. Mansour
Kevin M. Mansour

La mejor práctica es primero crear un estilo CSS en un archivo de hoja de estilo.

h1 {
   font-family: Georgia, "Times New Roman", Times, serif;
   font-size: 18px;
   font-weight: bold;
   color: #000000;
}

Avatar de usuario de Neil
neil

El color altera el color de la fuente, no el color de fondo, por lo que técnicamente es igualmente correcto. Sin embargo, hacerlo de esa manera significa que para cada encabezado que desee con este estilo, debe especificar una etiqueta de intervalo dentro como lo ha hecho.

Una mejor solución si desea tenerlo siempre vigente para las etiquetas h1 podría ser incluir una hoja de estilo con el siguiente código:

h1 {
  color: #ABABAB
}

¿Ha sido útil esta solución?