Skip to content
This page has been auto-translated and may contain errors.View in English

Elementos de texto ​

docs.scrimba.com

La mayor parte de lo que un visitante lee en una página es contenido escrito simple: títulos, párrafos, una advertencia en negrita, una cita, un fragmento de código. HTML tiene un elemento específico para cada una de estas funciones, y elegir el correcto hace algo más que cambiar la apariencia del texto. Le dice al navegador, a los motores de búsqueda y a las herramientas de asistencia qué es en realidad cada fragmento de texto.

Encabezados y jerarquía ​

HTML te da seis tamaños de encabezado, desde <h1> hasta <h6>. Un encabezado es un título para la página o para una sección de ella. <h1> es el título principal, el grande de arriba. <h2> marca una sección importante, <h3> una subsección dentro de ella, y así hasta <h6>.

Piensa en un libro impreso. El título en la portada es el <h1>. El título de cada capítulo es un <h2>. Los encabezados dentro de un capítulo son <h3>. Usas los niveles para mostrar qué va debajo de qué.

Algo que debes tener presente desde el inicio: no elijas un encabezado porque hace que el texto tenga el tamaño que quieres. <h1> resulta que se ve grande, pero su función es decir "este es el título principal", no "haz esto grande". Si quieres texto grande en algún lugar, eso es trabajo de CSS, más adelante.

Los seis elementos de encabezado, de <h1> a <h6>, describen la jerarquía de un documento: qué partes son secciones y cuáles son subsecciones. El número es un rango. No dice nada sobre el tamaño. <h1> es la cima del esquema, <h2> va debajo de él, <h3> debajo de ese.

La regla que conviene incorporar desde temprano es anidarlos en orden y no saltarse un nivel. Una sección encabezada con <h2> debería contener subsecciones <h3>, no saltar directo a <h4>. Saltarse niveles para llegar a un tamaño predeterminado más pequeño es el error clásico, y es la herramienta equivocada: si quieres que un encabezado se vea de cierta forma, dale estilo con CSS, y deja que el número refleje solo su rango dentro de la estructura.

Los elementos de encabezado definen el esquema del documento: la estructura ordenada y jerarquizada de sus secciones, de la misma manera en que una tabla de contenidos anida temas dentro de temas. De ahí se derivan tres reglas prácticas, y las tres tienen que ver con la accesibilidad y la búsqueda, no con la apariencia.

Primero, usa un solo <h1> por página, el verdadero título del contenido de esa página. Es la cima del esquema, y tener exactamente uno le da a cada herramienta un punto de referencia único y sin ambigüedades sobre de qué trata la página.

Segundo, no te saltes niveles al bajar. Un lector de pantalla (software que lee una página en voz alta para personas que no pueden verla) le permite a su usuario abrir una lista con todos los encabezados y saltar entre ellos, de la misma forma en que un lector con visión recorre rápidamente la página buscando la sección que quiere. Un salto de <h2> a <h4> se lee como un nivel faltante en esa lista, y la navegación deja de tener sentido.

Tercero, los rangos son semánticos, nunca tamaños. Los motores de búsqueda leen la estructura de encabezados para entender cómo está organizada una página, así que un <h3> elegido porque su tamaño predeterminado se veía bien, en lugar de porque en verdad es una sección de tercer nivel, termina engañando tanto al rastreador como al lector de pantalla. Define el tamaño en CSS; deja que el número lleve el significado.

html
<h1>Sourdough for beginners</h1>

<h2>Building a starter</h2>
<p>A starter is a living culture of flour and water.</p>

<h3>Day one to three</h3>
<p>Mix equal weights of flour and water, then wait.</p>

<h2>Baking your first loaf</h2>
<p>Once the starter is active, you are ready to bake.</p>

Un <h1> nombra la página completa. Dos encabezados <h2> marcan las secciones principales, y el <h3> queda perfectamente ubicado dentro de la primera de ellas. Lee los números de los encabezados por sí solos y podrás ver la forma del artículo sin leer una sola palabra del cuerpo.

JunoEncabezados y jerarquía Seis encabezados, de <h1> a <h6>, y <h1> es el único título principal, arriba de todo. El resto marca tus secciones y subsecciones. La trampa en la que caí al principio: no elijas un encabezado porque se ve grande, para eso está el CSS. El número tiene que ver con qué es la cosa, no con su tamaño.
JunoEncabezados y jerarquía Los encabezados ordenan tu contenido, no le dan tamaño. Anídalos en orden y no te saltes un nivel para caer en un tamaño predeterminado más chico, ahí es donde la gente se tropieza. ¿Necesitas que un encabezado se vea de cierta forma? Dale estilo con CSS y deja que el número describa la estructura.
JunoEncabezados y jerarquía Un <h1> por página, sin saltarse niveles al bajar, y nunca elijas un rango por su tamaño. Los usuarios de lectores de pantalla saltan entre encabezados como en una tabla de contenidos, y los motores de búsqueda leen ese mismo esquema, así que un encabezado elegido por apariencia engaña a ambos. Mantén el número como algo semántico y lleva la apariencia al CSS.

Párrafos y saltos de línea ​

Un bloque de texto normal va en un párrafo, el elemento <p>. Envuelve cada párrafo en su propio <p>...</p> y el navegador le agrega un poco de espacio arriba y abajo, para que los párrafos queden separados como en un libro.

html
<p>Bread needs four things: flour, water, salt, and time.</p>
<p>Get those right and the rest is patience.</p>

Fíjate en que presionar Enter en tu archivo HTML no le hace nada a la página. El navegador ignora los saltos de línea y los espacios extra que escribes; solo le importan las etiquetas. Por eso necesitas <p> para separar párrafos, en lugar de simplemente escribirlos en líneas distintas.

Si de verdad necesitas que una línea se corte dentro de un párrafo, como las líneas de una dirección o un poema corto, existe el elemento <br> para eso. Fuerza un único salto de línea y nada más.

El elemento <p> contiene un párrafo de texto continuo, y es el lugar por defecto para el contenido del cuerpo de la página. El navegador colapsa cualquier secuencia de espacios, tabulaciones y saltos de línea en tu código fuente hasta convertirla en un solo espacio, así que la disposición de tu texto en la página proviene de las etiquetas, no de cómo formatees el archivo.

El elemento <br> fuerza un salto de línea dentro de un bloque de texto. Es un elemento vacío, sin etiqueta de cierre, y solo es correcto cuando el salto forma parte del contenido mismo: direcciones postales, líneas de un poema, un bloque de firma.

html
<p>
  Nadia Rahman<br>
  14 Orchard Lane<br>
  Bristol BS1 4TR
</p>

Donde <br> está mal usado es como herramienta de espaciado. Apilar <br><br> para separar dos párrafos se ve bien pero es el instinto equivocado: eso son dos párrafos, así que son dos elementos <p>, y el espacio entre ellos es presentación, y la presentación va en CSS. Recurrir a <br> para crear espacio mezcla estructura y estilo, justo el hábito que conviene dejar atrás desde temprano.

<p> es un elemento de nivel de bloque, lo que significa que empieza en una nueva línea y ocupa todo el ancho disponible, apilándose verticalmente con los párrafos que lo rodean. Es el contenedor correcto para un fragmento de prosa, y el navegador le aplica un colapso de espacios en blanco a su contenido: cualquier secuencia de espacios, tabulaciones y saltos de línea en el código fuente se convierte en un solo espacio en el resultado renderizado. Por eso el formato del código fuente puede ser el que te resulte más legible, sin restricciones.

<br> representa un salto de línea que pertenece al contenido mismo. No es un espacio de diseño. Esa distinción tiene un costo concreto en accesibilidad. Un lector de pantalla trata el límite de un <p> como el final de un párrafo y hace una pausa acorde, dándole a su usuario una idea de dónde termina una idea y dónde empieza la siguiente. Una pila de elementos <br> no produce ese límite: el software sigue leyendo sin pausa, y la estructura que un lector con visión percibe en el espaciado resulta invisible para quien escucha. Los párrafos vacíos usados como espaciadores tienen el mismo problema: algunos lectores de pantalla los anuncian como vacíos, otros los omiten, y en cualquier caso el espacio que buscabas no se comunica.

La regla que resiste el contacto con proyectos reales: <br> solo cuando el salto es parte de los datos (una dirección, un verso, una línea en la etiqueta de un formulario), y el espaciado vertical entre bloques siempre en CSS con margin. La estructura lleva el significado; el estilo lleva la apariencia, y mantenerlos separados es lo que hace que una página sea a la vez mantenible y accesible.

JunoPárrafos y saltos de línea Cada bloque de texto va en su propio <p>...</p>, y eso es lo que pone espacio entre párrafos. El navegador ignora los Enter y los espacios que escribes, así que las etiquetas hacen el trabajo. Usa <br> solo cuando una línea realmente necesita cortarse a mitad de un párrafo, como en una dirección.
JunoPárrafos y saltos de línea<p> para un párrafo, y el navegador colapsa los espacios en blanco de tu código fuente, así que formatear el archivo no cambia nada en la página. <br> es para saltos que forman parte del contenido, como una dirección, nunca para separar cosas. Dos <br> para hacer un espacio es la señal de que el espaciado se filtró fuera del CSS.
JunoPárrafos y saltos de línea<p> es un bloque que le da a un lector de pantalla un límite de párrafo real donde pausar; una pila de <br> no le da nada y la estructura desaparece para quien escucha. Así que <br> solo cuando el salto es parte de los datos, y todo el espaciado vertical en CSS con margin. Los párrafos vacíos como espaciadores tienen el mismo problema de accesibilidad, evítalos también.

Énfasis: <strong> y <b>, <em> e <i> ​

Dos elementos hacen que el texto se vea en negrita, y dos lo hacen en cursiva. <strong> y <b> se renderizan en negrita; <em> e <i> se renderizan en cursiva. Entonces, cuatro etiquetas, dos apariencias.

html
<p><strong>Warning:</strong> the oven is very hot.</p>
<p>You need to knead the dough <em>thoroughly</em>.</p>

Por ahora, recurre a <strong> cuando un fragmento de texto es importante, como una advertencia, y a <em> cuando quieras enfatizar una palabra tal como lo haría tu voz al leer en voz alta. Son las dos que usarás la mayor parte del tiempo, y el navegador se encarga de mostrarlas en negrita y cursiva.

Los cuatro elementos se dividen en dos pares, y la división está entre significado y apariencia. <strong> y <em> son semánticos: dicen algo sobre el texto. <b> e <i> son presentacionales: solo cambian cómo se ve.

Usa <strong> cuando el contenido tiene importancia, seriedad o urgencia: una advertencia, una instrucción crítica. Usa <em> para el énfasis de acentuación, la palabra en la que te apoyarías si leyeras la frase en voz alta, lo cual puede cambiar su significado. Ambos resultan renderizándose en negrita y cursiva respectivamente, pero los eliges por lo que significan.

<b> e <i> son para los casos en los que quieres negrita o cursiva sin que haya importancia o énfasis detrás. Un <b> para una palabra clave a la que quieres llevar la mirada, un <i> para el nombre de un barco o una frase en otro idioma. Marcan el texto como estilísticamente distinto, sin afirmar que tenga más importancia.

html
<p><strong>Do not</strong> open the valve while the system is pressurised.</p>
<p>She whispered that it was <em>her</em> idea, not his.</p>
<p>The keyboard shortcut is <b>Ctrl</b> plus <b>S</b>.</p>
<p>We took the ferry across on the <i>Lady Marion</i>.</p>

Si solo recuerdas una cosa: <strong> y <em> lo dicen en serio, <b> e <i> solo lo muestran. Cuando el texto realmente importa, recurre al par semántico.

Los cuatro se renderizan de las mismas dos formas que usaría un navegador por defecto, negrita o cursiva, así que en pantalla son intercambiables. La diferencia está en lo que comunican a todo lo que no está viendo los píxeles, y ahí es donde realmente vive la elección.

<strong> marca importancia: contenido que es serio, urgente o que no debe pasarse por alto. <em> marca énfasis de acentuación: la palabra cuyo peso cambia el significado de la frase (compara "llámame a mí" con "llámame mañana"). Un lector de pantalla puede reaccionar ante esto. Muchos cambian el tono o el ritmo en el texto enfatizado, y un <strong> puede presentarse de forma distinta a la prosa normal, así que la importancia que codificaste realmente se transmite a alguien que no está viendo la negrita. Anídalos para expresar grado: <strong> dentro de <strong> se lee como mayor importancia, <em> dentro de <em> como un énfasis más fuerte.

<b> e <i> son el par presentacional, y son la elección correcta con más frecuencia de lo que sugiere el consejo de "evítalos". Sus definiciones reales son acotadas. <b> llama la atención hacia un texto por una razón práctica, sin agregarle importancia: una palabra clave en un resumen, el nombre de un producto en una reseña. <i> marca texto en una voz o un tono alternativo: un término técnico en su primer uso, un nombre taxonómico como Homo sapiens, una frase en otro idioma, el pensamiento interno de un personaje. Cuando exista un elemento más específico (<cite> para el título de una obra, <dfn> para una definición, <code> para código), usa ese en su lugar; <b> e <i> son el recurso por defecto cuando el texto está marcado como distinto pero no aplica un significado más fuerte.

El error que hay que evitar es usar <b> cuando quieres decir <strong>, o <i> cuando quieres decir <em>. Se ven idénticos, así que nada en pantalla te avisa que está mal, pero habrás descartado la importancia o el énfasis en el que se apoya la tecnología de asistencia. Pregúntate qué significa el texto, no cómo debería verse: si importa, <strong> o <em>; si solo está marcado como distinto, <b> o <i>.

JunoÉnfasis: strong y b, em e i<strong> y <b> se ven en negrita, <em> e <i> se ven en cursiva. Al empezar, recurre a <strong> cuando algo es importante, como una advertencia, y a <em> cuando quieras enfatizar una palabra tal como lo haría tu voz. Esos dos van a cubrir casi todo lo que escribas.
JunoÉnfasis: strong y b, em e i<strong> significa importante, <em> significa enfatizado, y ambos llevan significado. <b> e <i> son la misma negrita y cursiva sin significado detrás, para texto que solo quieres marcar como distinto. Se ven igual de todas formas, así que elige el par según lo que el texto significa, no según cómo debería verse.
JunoÉnfasis: strong y b, em e i En pantalla los cuatro son negrita o cursiva; la diferencia es lo que escucha un lector de pantalla. <strong> y <em> codifican importancia y énfasis y pueden anunciarse distinto, así que usar <b> o <i> cuando en realidad quieres decir eso pierde ese significado sin que se note. <b> e <i> son correctos para texto que solo está marcado como distinto, una palabra clave o un término, cuando no aplica ningún elemento más específico.

Otros textos en línea (citas, <code>, <abbr> y afines) ​

Más allá de la negrita y la cursiva, HTML tiene pequeños elementos para fragmentos de texto comunes. Una cita corta va en <q>, y el navegador le agrega las comillas por ti. Un fragmento de código, como el nombre de un comando, va en <code>, que el navegador muestra en una fuente monoespaciada para que destaque frente al texto normal.

html
<p>My gran always said <q>a watched pot never boils</q>.</p>
<p>Save the file with the <code>Ctrl S</code> shortcut.</p>

Hay unos cuantos más de estos, pero <q> para una cita corta y <code> para código son los dos que verás con más frecuencia. Cada uno envuelve un pequeño fragmento de texto y le dice al navegador qué es.

Estos son elementos en línea: envuelven un fragmento de texto dentro de un párrafo sin pasar a su propia línea, a diferencia de un bloque como <p>. Cada uno nombra qué es un fragmento de texto, así que conviene recurrir al elemento específico en lugar de darle estilo a un <span> común para que parezca lo que no es.

Los que vale la pena conocer:

html
<p>The report cites <cite>The Pragmatic Programmer</cite> twice.</p>
<p>Run <code>npm install</code>, then press <kbd>Enter</kbd>.</p>
<p>The room is <strong>24m<sup>2</sup></strong> of floor space.</p>
<p>The old total was <del>£40</del> <ins>£32</ins>.</p>
<p>As <abbr title="HyperText Markup Language">HTML</abbr> matures, the tags settle.</p>

<cite> nombra el título de una obra. <code> marca código, <kbd> marca entrada de teclado, y <samp> marca la salida de un programa. <sup> y <sub> son superíndice y subíndice, para cosas como exponentes y fórmulas químicas. El símbolo de grados es un carácter propio, °, y no un superíndice. <del> e <ins> marcan texto eliminado y texto insertado, útiles para mostrar una edición o un cambio de precio. <abbr> marca una abreviatura, y su atributo title contiene la forma completa.

<q> es para una cita corta dentro del texto y agrega las comillas automáticamente. Para una cita más larga e independiente quieres usar <blockquote>, que es un elemento de bloque.

Estos son elementos en línea, que fluyen dentro de una línea de texto en lugar de formar su propio bloque. Existen para que un fragmento de texto pueda llevar su significado directamente en el marcado, y eso es justo lo que hace que ese significado esté disponible para la tecnología de asistencia, los motores de búsqueda y tu propio estilo y código. La recomendación práctica es usar el elemento más específico que corresponda y recurrir a un <span> neutro solo cuando ninguno se ajuste.

El conjunto que en verdad vas a usar:

html
<p>See <cite>Designing Data-Intensive Applications</cite>, chapter three.</p>
<p>Type <kbd>git status</kbd> to see <samp>nothing to commit</samp>.</p>
<p>The sample used <abbr title="Cascading Style Sheets">CSS</abbr> variables throughout.</p>
<p>Revised figure: <del>1,200</del> <ins>1,450</ins> entries.</p>

<cite> marca el título de una obra citada (un libro, una película, un artículo), no el nombre de una persona, un error en el que la gente cae constantemente. <code> es un fragmento de código de computadora y <kbd> es una entrada de teclado del usuario, dos cosas que suelen renderizarse en fuente monoespaciada pero que significan direcciones opuestas de la interacción. <samp> es una muestra de la salida de un programa. <abbr> marca una abreviatura y lleva un atributo title con la forma completa; un lector de pantalla puede anunciar u ofrecer esa expansión, y aparece como un tooltip al pasar el cursor, así que quien lee nunca se queda adivinando qué significan las letras. <del> e <ins> representan una edición, texto eliminado y texto agregado, y se anuncian como tales, algo relevante cuando el cambio en sí es lo importante, como una corrección de precio o un texto marcado para revisión.

Para las citas, <q> es en línea e inserta comillas apropiadas según el idioma a través de CSS (por eso no tienes que escribir las comillas tú mismo), mientras que <blockquote> es el elemento de nivel de bloque para una cita extensa, y ambos aceptan un atributo opcional cite con la URL de la fuente. El hilo común en todo esto: el elemento es el significado, y la apariencia es una capa separada que defines en CSS. Elegir la etiqueta según qué es el texto, en lugar de por cómo se ve en monoespaciado o cursiva, es lo que mantiene la página legible para las herramientas que no pueden verla.

JunoOtros textos en línea (citas, code, abbr y afines)<q> envuelve una cita corta y agrega las comillas por ti, y <code> muestra código en una fuente monoespaciada para que destaque. Hay algunas etiquetas pequeñas más de este tipo, pero esas dos son las que más aparecen. Cada una envuelve un fragmento de texto y dice qué es.
JunoOtros textos en línea (citas, code, abbr y afines) Estas etiquetas en línea nombran cada una qué es un fragmento: <code> para código, <kbd> para teclas presionadas, <cite> para el título de una obra, <abbr> con un title para la forma completa. Recurre a la específica en lugar de darle estilo a un <span> común. Y <q> para una cita corta, <blockquote> para una independiente.
JunoOtros textos en línea (citas, code, abbr y afines) Usa el elemento en línea más específico y recurre a <span> solo cuando nada más se ajuste. Cuidado con los que la gente usa mal: <cite> es el título de una obra, no una persona, y <code> frente a <kbd> se ven parecidos pero significan extremos opuestos de la interacción. El title de <abbr> lo leen las tecnologías de asistencia, y <q> pone sus propias comillas, así que no las escribas tú.