Formularios, tablas y contenido multimedia en HTML

Crea formularios web que recojan la información adecuada: elige tipos de entrada, áreas de texto y listas desplegables, etiqueta cada control y descubre qué envía el navegador. Usa la validación integrada del navegador para detectar respuestas ausentes o con un formato incorrecto. Presenta datos en tablas claras y accesibles, añade audio y vídeo con subtítulos y contenido alternativo, e inserta mapas, vídeos y otras páginas de forma segura con iframes.

PrincipianteUnidad 3 de 8 del curso Curso de Fundamentos de desarrollo web

Lo que aprenderás

  1. Crea un formulario, elige un control adecuado para cada dato, etiqueta cada control y descubre exactamente qué envía el navegador al enviar el formulario.
    • Configura un formulario y comprende qué envía
      Usa el elemento form, nombres y valores, botones de envío y los atributos action y method para controlar qué datos salen de la página y adónde van.
    • Elige tipos de entrada adecuados para los datos
      Elige el tipo de entrada adecuado para cada dato, de modo que los navegadores ofrezcan el teclado o selector apropiado y comprueben el formato básico.
    • Usa áreas de texto, listas desplegables y otros controles
      Recoge textos más largos, ofrece listas fijas de opciones y sugerencias al escribir, y muestra progresos o medidas con textarea, select, datalist, progress y meter.
    • Etiqueta cada control y agrupa los que estén relacionados
      Conecta las etiquetas visibles con sus controles, agrupa los controles relacionados con fieldset y legend, y añade instrucciones e indicaciones de autocompletado para que todo el mundo pueda rellenar el formulario.
  2. Usa atributos de validación HTML para que el navegador detecte valores ausentes, demasiado largos, fuera de intervalo o con un formato incorrecto antes de enviar el formulario, y conoce los límites de esta comprobación.
    • Establece campos obligatorios y limita la longitud del texto
      Usa required, minlength y maxlength, y predice cuándo el navegador acepta o bloquea un envío.
    • Establece intervalos e incrementos para números, fechas y horas
      Usa min, max y step para aceptar solo valores razonables y predice qué valores pasan la validación.
    • Comprueba la coincidencia con patrones y proporciona indicaciones útiles
      Escribe reglas de patrón sencillas, explícalas a los usuarios, aplica estilos a campos válidos y no válidos, y comprende por qué el servidor debe volver a comprobar los datos.
  3. Marca datos tabulares con filas, celdas, encabezados y un título, y mantén comprensibles las tablas grandes mediante ámbitos de encabezado, grupos de filas y columnas y celdas combinadas.
    • Crea una tabla de datos con encabezados y título
      Usa table, tr, th, td y caption para presentar datos en filas y columnas, y da a la tabla una estructura clara mediante ámbitos de encabezado y grupos de filas.
    • Combina celdas y asocia encabezados complejos
      Usa colspan y rowspan correctamente, agrupa columnas y vincula las celdas con sus encabezados cuando una tabla tenga más de un nivel de encabezados.
  4. Inserta sonido y vídeo con los reproductores del navegador, proporciona formatos y contenido alternativo que funcionen en distintos navegadores y haz que el contenido multimedia sea utilizable por todos mediante subtítulos para personas sordas, subtítulos y transcripciones.
    • Inserta audio y vídeo con los atributos adecuados
      Usa los elementos audio y video con controles, tamaños, una imagen de portada e indicaciones de carga, y decide cuándo son adecuadas la reproducción automática y la repetición en bucle.
    • Ofrece formatos y alternativas que funcionen en todos los navegadores
      Elige formatos de archivo ampliamente compatibles, enumera fuentes alternativas en orden y añade contenido alternativo.
    • Añade subtítulos para personas sordas, subtítulos y transcripciones
      Escribe un archivo WebVTT sencillo, adjúntalo con el elemento track y proporciona transcripciones para que el contenido multimedia se pueda usar sin sonido.
  5. Coloca mapas, vídeos y otras páginas web dentro de tu propia página con iframes y elige ajustes que mantengan cada contenido insertado accesible, rápido, privado y seguro.
    • Inserta una página con un iframe
      Añade un iframe con título, tamaño y carga diferida, adapta un código de inserción de otro sitio y reconoce los sitios que no permiten la inserción.
    • Protege la seguridad y la privacidad del contenido insertado y elige el elemento adecuado
      Limita lo que puede hacer una página insertada con sandbox y allow, considera qué información comparten los contenidos insertados sobre los visitantes y elige entre iframe, embed, object y los elementos multimedia.

Guía de estudio de Formularios y tablas en HTML

5 capítulos

1

Crea formularios que las personas puedan usar

Un formulario útil parte de la información que las personas necesitan introducir. Elige controles adecuados para esa información, da a cada uno una etiqueta clara y conecta los controles a un formulario que envíe nombres y valores con significado. Un cuadro de búsqueda, un formulario de mensajes y una carga de archivos recogen datos de entrada, pero necesitan ajustes diferentes. Leer el HTML desde la entrada del usuario hasta la solicitud saliente facilita la revisión de esas decisiones.

1.1 Cómo envía un formulario nombres y valores

Un formulario recoge respuestas relacionadas y las envía a una URL. El elemento <form> rodea sus controles y su botón de envío. Mantén separados los formularios independientes: HTML no permite un formulario dentro de otro.

Elige el destino y el método

action indica la URL de destino. Sin él, la solicitud va a la página actual. method elige cómo envía el navegador los datos; el valor predeterminado es GET.

MétodoAdónde van los datosUso habitual
GETA la URL después de un signo de interrogaciónBúsquedas y filtros
POSTAl cuerpo de la solicitudMensajes, registros y cambios en datos almacenados

Los datos de GET pueden aparecer en el historial, los marcadores y los registros del servidor. POST los mantiene fuera de la cadena de consulta, pero no los cifra. Usa HTTPS para proteger los datos durante la transmisión. El programa del servidor recibe y procesa la solicitud; el formulario HTML no guarda ni envía por correo las respuestas por sí mismo.

Sigue una solicitud de búsqueda
<form action="/search" method="get">
  <label for="query">Search</label>
  <input id="query" type="search" name="q">
  <label for="language">Language</label>
  <select id="language" name="lang">
    <option value="en">English</option>
  </select>
  <button type="submit">Search</button>
</form>

Si el usuario introduce «html tables», el navegador solicita /search?q=html+tables&lang=en. Toma el nombre del campo q y su valor actual, codifica el espacio como + y une los dos pares con &. El ? inicia la cadena de consulta.

Un control necesita un name para aportar datos. Su id tiene otra finalidad: identificar el elemento en la página, incluso para conectar una etiqueta. Un campo con id="query" pero sin name puede parecer normal y funcionar con normalidad, aunque no aporte ninguna respuesta a la solicitud.

Identifica qué controles aportan datos

Un campo de texto vacío con nombre aporta un valor vacío, como comment=. Una casilla de verificación marcada aporta su value; sin valor, aporta on. Una casilla sin marcar no aporta nada. Un control desactivado no está disponible y se omite. Un campo readonly compatible no se puede editar, pero sigue aportando su valor.

Un campo oculto, como <input type="hidden" name="source" value="newsletter">, aporta un valor sin un control visible. No es secreto: los visitantes pueden inspeccionarlo y cambiarlo en las herramientas de desarrollo.

Indica explícitamente el comportamiento de los botones

Dentro de un formulario, un <button> normal envía el formulario por defecto. Escribe type="submit" para el botón de envío y type="button" para un botón que necesita un script. type="reset" restablece los valores iniciales y puede borrar el trabajo de un usuario. Pulsar Intro en un campo de una línea también suele enviar el formulario. <input type="submit" value="Send"> es otro control de envío; un <button> también puede contener contenido en línea, como un icono.

Envía el contenido de un archivo
<form action="/upload" method="post" enctype="multipart/form-data">
  <label for="attachment">Attachment</label>
  <input id="attachment" type="file" name="attachment">
  <button type="submit">Upload</button>
</form>

Para una carga normal de archivos se necesitan tanto POST como enctype="multipart/form-data". Con la codificación predeterminada del formulario, los nombres de los archivos se envían como texto, pero su contenido no.

Puntos clave

  • El name de un control identifica su valor enviado; id identifica el elemento en la página.
  • GET coloca los pares en la URL; POST los coloca en el cuerpo de la solicitud. HTTPS cifra los datos durante la transmisión.
  • Las casillas sin marcar y los controles desactivados se omiten; los campos de solo lectura compatibles se envían.
  • Indica explícitamente los tipos de botón para evitar envíos o restablecimientos accidentales.
  • La carga de archivos necesita POST y multipart/form-data.

1.2 Tipos de entrada y valores que recogen

Un <input> es un elemento vacío, por lo que no tiene contenido ni etiqueta de cierre. Su type selecciona el control y la ayuda del navegador que lo acompaña. Los tipos ausentes o no reconocidos recurren a un campo de texto.

Adapta el texto a su finalidad
TipoUsoAyuda del navegador
textUna línea de texto libreEntrada de texto general
searchUna consulta de búsquedaPuede incluir un botón para borrar
emailUna dirección de correo electrónicoTeclado de correo y comprobación de sintaxis
urlUna dirección web completaTeclado de URL y comprobación de sintaxis
telUn número de teléfonoTeclado de teléfono; sin comprobación de formato
passwordUna contraseñaOculta los caracteres visibles

Un campo de correo electrónico comprueba la sintaxis, no si existe un buzón. Incluso «ana@example» pasa la comprobación básica de sintaxis. Añade multiple para aceptar una lista de direcciones separadas por comas. Un campo de URL espera un esquema: «https://example.com» pasa, mientras que «example.com» no. Los formatos de teléfono varían, por lo que tel no impone ninguna regla de formato. Ocultar la contraseña impide que las personas cercanas lean la pantalla; HTTPS sigue proporcionando el cifrado durante la transmisión.

Distingue las cantidades de los códigos de dígitos

Usa number para una cantidad, como un recuento o una masa. A menudo tiene botones de incremento para aumentar o reducir el valor. Usa range para un ajuste aproximado, como el volumen; su intervalo predeterminado es 0–100 y su valor predeterminado es 50.

Un código de socio no es una cantidad. Usa <input type="text" inputmode="numeric"> para un código de dígitos, de modo que los ceros iniciales sigan siendo texto y los botones de incremento no lo cambien. inputmode solo sugiere un teclado en pantalla: no valida la entrada. decimal, tel, email y url son otras indicaciones útiles para el teclado.

Distingue el formato mostrado del enviado

Los selectores de fecha siguen la configuración regional del usuario. El 15 de marzo de 2026 puede aparecer como «03/15/2026» o «15/03/2026», pero la fecha enviada es 2026-03-15.

TipoEjemplo de valor enviado
date2026-03-15
time14:30
datetime-local2026-03-15T14:30
month2026-03
week2026-W11

Estos controles no almacenan una zona horaria. Por tanto, cuando sea necesario, hay que explicar por separado la ubicación o zona de la hora local de una cita.

Ofrece opciones independientes o una sola elección

Las casillas de verificación son independientes: se pueden marcar varias. Los botones de opción forman un grupo de selección única cuando sus valores de name coinciden. Da a cada botón de opción un value distinto y usa checked para el valor predeterminado.

<label><input type="radio" name="size" value="S"> Small</label>
<label><input type="radio" name="size" value="M" checked> Medium</label>
<label><input type="radio" name="size" value="L"> Large</label>

La selección predeterminada envía size=M. Los nombres diferentes crearían grupos separados y permitirían varias selecciones.

Elige colores y archivos

color proporciona un selector y puede enviar un color RGB como #ff8800. file abre un selector de archivos; accept=".pdf,image/*" sugiere archivos PDF e imágenes, y multiple permite varios archivos. El filtro ayuda a los usuarios a elegir; el servidor aún debe comprobar el tipo y el contenido del archivo recibido. En los controles que lo usan, value establece el valor inicial, que sigue siendo el valor enviado si el usuario no hace cambios.

Puntos clave

  • Elige un tipo según el significado de los datos, no solo por su apariencia.
  • Los tipos de correo electrónico y URL comprueban la sintaxis; tel e inputmode no lo hacen.
  • Usa texto con una indicación de teclado numérico para los códigos de dígitos.
  • La visualización de fechas y horas varía según la configuración regional; los formatos enviados son fijos y no incluyen zona horaria.
  • Los botones de opción comparten un nombre para permitir una sola elección; las casillas de verificación permiten elecciones independientes.
  • El filtro accept de un selector de archivos no es una comprobación de seguridad.

1.3 Respuestas largas, opciones fijas y sugerencias

Un campo de entrada de una línea no sirve para todas las respuestas. Un texto más largo necesita espacio, mientras que un conjunto fijo de opciones necesita controles que muestren lo que se permite. Antes de elegir el elemento, decide si el usuario puede introducir algo fuera de las opciones.

Da espacio al texto largo con un área de texto
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" cols="40"></textarea>

rows indica el número visible de líneas y cols el ancho aproximado en caracteres. Ninguno limita la cantidad de texto que se puede introducir; usa maxlength para limitar la longitud. El texto inicial va entre las etiquetas, no en un atributo value. Los espacios y saltos de línea en esa posición pasan a formar parte del valor inicial, así que las etiquetas de apertura y cierre juntas crean un cuadro realmente vacío.

Envía un valor desde una lista desplegable
<label for="delivery">Delivery</label>
<select id="delivery" name="delivery" required>
  <option value="">Choose delivery</option>
  <option value="standard">Standard (3–5 days)</option>
  <option value="express">Express (next day)</option>
</select>

Elegir «Express (next day)» envía delivery=express. El texto visible puede explicar una opción mientras su value permanece breve y estable. Si una opción no tiene value, se envía su texto. Añade selected para seleccionar una opción de antemano. Aquí, la primera opción tiene un valor vacío, por lo que la lista obligatoria de selección única no se puede enviar hasta que el usuario elija un método de entrega.

Agrupa opciones o permite elegir varias

Un <optgroup label="Hot drinks"> da un encabezado a opciones relacionadas. Ese encabezado no es una opción. Un select con multiple permite seleccionar varias opciones y size establece sus filas visibles. Cada valor seleccionado se convierte en un par independiente con el mismo nombre: topics=html&topics=css.

La selección múltiple en equipos de escritorio suele requerir un clic con Ctrl o Cmd. Para una lista corta de opciones independientes, las casillas de verificación suelen hacer más clara la selección. Para una lista corta de selección única, los botones de opción mantienen visibles todas las opciones. Un select es útil para una lista larga de opciones fijas.

Sugiere sin limitar
<label for="city">City</label>
<input id="city" name="city" list="cities">
<datalist id="cities">
  <option value="Nairobi">
  <option value="Osaka">
</datalist>

El list del campo coincide con el id del datalist. Los usuarios ven sugerencias, pero aún pueden escribir otra ciudad. Por tanto, un datalist es útil para respuestas frecuentes a una pregunta abierta. Sustituir un select por un datalist cambia las opciones aceptadas; no solo cambia el aspecto de la misma lista fija.

Muestra el progreso o una medida

<progress> y <meter> muestran valores en vez de recoger respuestas. Una barra de progreso indica cuánto se ha completado, como <progress value="70" max="100">70%</progress>. Un indicador de medida muestra una medida dentro de un intervalo conocido: <meter value="0.6">60%</meter> puede representar el almacenamiento utilizado. Un indicador de medida tiene por defecto un intervalo de 0–1, salvo que min y max lo cambien. El texto dentro de estos elementos proporciona contenido alternativo cuando no se puede dibujar la barra. Mantén una etiqueta explicativa junto a cualquiera de los dos indicadores para que los usuarios sepan qué mide el número.

Puntos clave

  • El valor inicial de un área de texto es su contenido; rows y cols solo establecen su tamaño visible.
  • Un select envía los valores de las opciones seleccionadas y puede exigir una opción fija.
  • Un datalist sugiere respuestas, pero permite introducir otro texto.
  • Usa progress para indicar cuánto se ha completado una tarea y meter para una medida dentro de un intervalo conocido.

1.4 Etiquetas visibles e instrucciones útiles para formularios

Un campo necesita un nombre que permanezca visible mientras el usuario lo rellena. Un <label> conectado también da al control un nombre accesible para los lectores de pantalla y convierte su texto en un área de clic más grande. Las instrucciones explican cualquier regla que la etiqueta por sí sola no pueda transmitir.

Conecta la etiqueta al control
<label for="email">Email address</label>
<input id="email" name="email" type="email" autocomplete="email">

El for de la etiqueta coincide con el id del campo, incluidas las mayúsculas y minúsculas. El name controla el envío y no tiene por qué ser igual. Cada id debe ser único en la página. Si for="email" apunta a un name, pero no hay un id coincidente, la etiqueta parece normal, pero no está conectada.

Otra opción es colocar el campo dentro de la etiqueta:

<label>
  <input type="checkbox" name="news">
  Send me the monthly newsletter
</label>

Esta conexión implícita es útil para una etiqueta breve de casilla de verificación. Un par explícito for e id también funciona cuando la etiqueta y el control están separados en el HTML.

Mantén las etiquetas separadas de los ejemplos

Un texto de marcador de posición como «name@example.com» desaparece cuando se empieza a escribir. También puede ser difícil de leer y no es un nombre accesible fiable. Mantén la etiqueta visible; usa un marcador de posición solo como ejemplo breve cuando resulte útil.

Marca los campos obligatorios con palabras, como «Nombre (obligatorio)», o explica un asterisco una vez encima del formulario. El color por sí solo no puede indicar a todo el mundo qué es obligatorio. Explica el formato antes de que los usuarios intenten enviar el formulario.

<label for="pw">Password (required)</label>
<input id="pw" name="password" type="password"
       required minlength="8" aria-describedby="pw-hint">
<p id="pw-hint">Use at least 8 characters.</p>

aria-describedby apunta al id del texto de ayuda. Añade la instrucción como descripción después del nombre del campo; no sustituye la etiqueta.

Da nombre a un grupo de controles
<fieldset>
  <legend>Delivery speed</legend>
  <label><input type="radio" name="speed" value="standard"> Standard</label>
  <label><input type="radio" name="speed" value="express"> Express</label>
  <label><input type="radio" name="speed" value="pickup"> Pickup</label>
</fieldset>

La leyenda proporciona la pregunta compartida; cada etiqueta da nombre a una respuesta. Un fieldset también puede agrupar campos de dirección relacionados. Pon primero la leyenda. disabled en un fieldset desactiva sus controles descendientes, excepto los controles dentro de su primera leyenda. Mantén los controles de formulario normales fuera de la leyenda para que esta excepción no cause sorpresas.

Ayuda a los navegadores a rellenar datos conocidos

autocomplete describe la finalidad de la información sobre el usuario. Entre sus valores están name, email, tel, street-address, postal-code, country-name, bday, new-password, current-password y one-time-code. Indicar correctamente estas finalidades facilita la entrada de datos guardados y cumple el criterio 1.3.5 de las WCAG 2.2, Identificar el propósito de la entrada (AA). autocomplete="off" es una petición; los navegadores aún pueden ofrecer contraseñas guardadas.

Para un campo de teléfono opcional, usa la etiqueta «Número de teléfono (opcional)» con type="tel", name="phone" y autocomplete="tel". Haz clic en su etiqueta para comprobar el foco y después recorre el formulario con Tab. Prueba así todas las etiquetas, incluidas las que están junto a casillas de verificación y botones de opción.

Puntos clave

  • Una etiqueta visible necesita una conexión real con su control.
  • for coincide con un id único; el envío usa name.
  • Una leyenda da nombre a un fieldset, mientras que las etiquetas dan nombre a sus controles individuales.
  • Conecta los textos de ayuda visibles con aria-describedby y marca los campos obligatorios con texto.
  • Indica correctamente las finalidades de autocompletado y comprueba el formulario con clics y con el teclado.
2

Comprueba las respuestas antes del envío

El navegador puede detectar respuestas ausentes, texto de longitud incorrecta, valores fuera de un intervalo y entradas que no coinciden con un formato fijo. Esas comprobaciones parten del tipo de entrada y de los atributos HTML. Examina cómo se combinan varias reglas, incluidos los casos en que se permite un valor vacío. Las instrucciones claras ayudan a corregir una entrada; las comprobaciones en el servidor siguen siendo necesarias porque las reglas del navegador se pueden eludir.

2.1 Campos obligatorios y longitud del texto

La validación integrada comprueba los controles de un formulario cuando el usuario lo envía. Un control que no supera la validación bloquea el envío; el navegador pone el foco en el primer campo no válido y proporciona un mensaje en su propio idioma. El navegador elige la redacción exacta. Cambiarla requiere JavaScript.

Exige una respuesta

required significa que un control necesita un valor. En un campo de texto, una cadena vacía falla. En una casilla de verificación, required significa que esa casilla concreta debe estar marcada, como al aceptar las condiciones. Para botones de opción con el mismo nombre, poner required en uno de ellos significa que debe seleccionarse un botón del grupo. Un select obligatorio de selección única con una primera opción vacía necesita una selección que no esté vacía.

<label for="username">Username (required)</label>
<input id="username" name="username"
       required minlength="4" maxlength="12">

El navegador combina estas reglas. El campo debe contener una respuesta y el texto introducido por el usuario debe ajustarse a los límites de longitud. Omitir type produce el campo de texto normal.

Cuenta los caracteres introducidos

minlength establece la longitud mínima permitida y maxlength la máxima. Los espacios y la puntuación cuentan. La longitud se mide en unidades de código UTF-16, por lo que algunos emojis cuentan como dos; cada letra latina ordinaria cuenta como una.

En este ejemplo, «Li» tiene dos caracteres y no alcanza el mínimo. «Lina» tiene cuatro y pasa. «mountainhiker» tiene 13 caracteres. Al escribir normalmente, el navegador se detiene después del duodécimo y deja «mountainhike». El ancho de un cuadro de texto no establece este límite.

Trata la presencia y la longitud como reglas distintas

Un campo opcional con minlength="4" puede estar vacío. La longitud mínima se comprueba cuando el usuario proporciona un valor. Añadir required hace que una entrada vacía también falle. Esto importa para un apodo opcional: el usuario puede omitirlo, pero, si lo proporciona, debe tener suficientes caracteres.

required es un atributo booleano. Su presencia lo activa, incluso con required="false". Para hacer que el campo sea opcional, elimina el atributo. La misma regla de presencia se aplica a muchos otros atributos HTML de activación.

Reconoce lo que estas comprobaciones no determinan

Una cadena de espacios sigue siendo contenido en un campo de texto. Por tanto, required la acepta y los espacios también cuentan para la longitud. Una regla que necesite un carácter visible requiere un patrón adecuado o una comprobación en el servidor. No digas a los usuarios que required por sí solo garantiza una respuesta con significado.

Las restricciones de longitud también dependen de cómo se introdujo el valor. Un valor inicial escrito en HTML, o uno asignado por un script, no se marca como inválido por minlength o maxlength solo por ser demasiado corto o demasiado largo. Un valor predeterminado correcto sigue siendo importante aunque la escritura normal esté limitada.

Para comprobar este campo, intenta enviarlo vacío y después introduce dos letras, cuatro letras y más de 12 letras. Cada prueba aísla una regla diferente. Cuando el navegador deja de aceptar caracteres en el límite, lee el valor que realmente quedó en el campo en vez de suponer que se aceptó toda la entrada que intentaste escribir.

Puntos clave

  • required y los límites de longitud resuelven problemas diferentes.
  • Los atributos booleanos siguen activados aunque se escriban con el valor "false".
  • Los espacios cuentan como contenido; algunos emojis usan dos unidades de código UTF-16.
  • Un botón de opción obligatorio hace que su grupo con el mismo nombre requiera una selección.

2.2 Límites e incrementos permitidos

Un valor numérico o de fecha puede tener el formato correcto y aun así no ser adecuado. min y max establecen sus límites; step establece qué incrementos se permiten dentro de ellos. Un número debe superar ambas comprobaciones.

Establece el intervalo
<label for="weight">Parcel weight (kg)</label>
<input id="weight" name="weight" type="number"
       min="0.5" max="30" step="0.5">

Los extremos están incluidos. Los valores de 0,5 a 30 kg están dentro del intervalo, pero también deben coincidir con incrementos de medio kilogramo. Empezar en 0,5 da 0,5; 1; 1,5 y así sucesivamente hasta 30: 60 valores permitidos. Una entrada de 31 supera el máximo; 2,25 está dentro del intervalo, pero no cumple el incremento.

Encuentra el punto de partida antes de contar

Los incrementos se cuentan desde min cuando está presente. Si no, se cuentan desde un atributo HTML value válido y, después, desde la base predeterminada del tipo. Para number, esa base predeterminada es 0. El incremento predeterminado es 1.

Con min="1" step="2", los valores aceptados son 1, 3, 5, 7 y así sucesivamente. Cuatro falla aunque sea múltiplo de dos, porque la secuencia empieza en uno. Con min="0.5" y sin atributo de incremento, el incremento sigue siendo uno: 0,5; 1,5 y 2,5 pasan, mientras que 1 y 2 no.

Si ni min ni un atributo value proporcionan una base diferente, un campo numérico predeterminado acepta números enteros. Usa step="0.01" para incrementos de una centésima o step="any" para eliminar la comprobación del incremento. any no elimina el mínimo ni el máximo.

Usa las unidades adecuadas para fechas y horas
TipoIncremento predeterminadoEjemplo de límite
number o range1max="30"
date1 díamin="2026-06-01"
time60 segundosmax="17:00"

Un campo de fecha con min="2026-06-01" max="2026-08-31" acepta fechas en ese intervalo, incluidos sus extremos. Escribe los atributos en el formato de envío, aunque el selector muestre otro orden de fecha.

Para citas, type="time" min="09:00" max="17:00" step="900" usa 900 segundos, o 15 minutos, por incremento. La secuencia comienza a las 09:00 y termina a las 17:00. Hay 32 intervalos y 33 horas seleccionables, incluidos ambos extremos.

Distingue lo que se escribe del valor almacenado

Algunos navegadores adaptados a la configuración regional permiten introducir el decimal «2,5», pero envían 2.5. El texto que no es un número se bloquea o deja vacío el valor numérico, según el navegador. Un campo opcional vacío sigue estando permitido salvo que esté presente required.

Un control deslizante range permanece dentro del intervalo permitido y se ajusta a los incrementos, por lo que los usuarios no encuentran los mismos errores de intervalo e incremento que al escribir un número. Por otra parte, los campos email y url no vacíos se someten a comprobaciones de tipo incluso sin required: que una respuesta sea opcional no convierte en válido un valor proporcionado con formato incorrecto.

Puntos clave

  • Comprueba por separado los límites y la coincidencia con los incrementos.
  • Encuentra la base del incremento en este orden: min, value en HTML y después la base predeterminada del tipo.
  • step="any" elimina la comprobación del incremento, pero conserva las demás restricciones.
  • Los incrementos de hora se expresan en segundos; los de fecha, en días.
  • Cuenta los extremos al calcular el número de horas permitidas.

2.3 Patrones fijos e indicaciones útiles

Un patrón es útil cuando una organización define un formato de texto exacto, como un código de producto. El navegador comprueba todo el valor no vacío frente al patrón. Explica el formato junto al campo para que los usuarios puedan cumplirlo antes de que aparezca un error.

Crea un patrón sencillo
<label for="code">Product code (required)</label>
<input id="code" name="code" required
       pattern="[A-Z]{3}-[0-9]{4}" aria-describedby="code-hint">
<p id="code-hint">Use 3 capital letters, a hyphen, and 4 digits (ABC-1234).</p>

[A-Z] corresponde a una letra latina mayúscula y {3} la repite exactamente tres veces. El guion fuera de los grupos de caracteres es literal. [0-9]{4} exige cuatro dígitos. «ABC-1234» pasa. «abc-1234», «ABC1234» y «ABC-12345» incumplen cada uno una parte diferente de la regla.

Parte del patrónSignificado
[A-Za-z]Una letra latina básica
{2,5}De dos a cinco repeticiones
+Una o más repeticiones
?Elemento anterior opcional
(cm|mm)Una de las dos alternativas, cm o mm

Los patrones se comparan con el valor completo, por lo que el texto adicional en cualquiera de los extremos falla. No añadas las barras que rodean las expresiones regulares en JavaScript. pattern se aplica a campos de texto como text, search, tel, email, url y password, no a un área de texto. Los valores vacíos omiten la comprobación del patrón; required se ocupa de una respuesta vacía.

Escribe con cuidado la puntuación literal

Los caracteres como ., + y ? tienen significados especiales. Escápalos cuando deban aparecer literalmente: \. corresponde a un punto. Dentro de un grupo de caracteres, los patrones HTML modernos también requieren escapar signos de puntuación como un guion literal: [a-z0-9\-]. Este guion es diferente del que define el intervalo a-z.

Un patrón no válido se ignora. Las demás reglas, incluidas required y las comprobaciones de tipo, siguen ejecutándose. Prueba un patrón con entradas que deban pasar y que deban fallar; que un formulario envíe un valor esperado todavía no demuestra que el patrón rechace algo.

Explica la regla y el error

Mantén un texto de ayuda visible junto al control. Un title puede contribuir a algunos mensajes del navegador; mantén la instrucción sobre el formato visible junto al campo. Evita patrones rígidos para nombres, teléfonos o códigos postales salvo que el formato aceptado sea realmente fijo; las respuestas internacionales válidas pueden variar mucho.

CSS ofrece :valid y :invalid para el estado de validación actual de un campo. :user-invalid retrasa el estado no válido hasta que el usuario interactúa, evitando que un formulario sin tocar aparezca cubierto de estilos de error. Acompaña los colores con palabras o un icono para que la distinción siga siendo visible sin percibir el color.

Decide cuándo se ejecutan las comprobaciones

novalidate en el formulario omite la validación del navegador durante el envío. formnovalidate en un botón de envío la omite para ese botón, lo que permite ofrecer «Guardar borrador» junto a un botón normal «Enviar». Las comprobaciones del navegador también se pueden eliminar mediante las herramientas de desarrollo o eludir con una solicitud directa. El servidor debe volver a comprobar los datos recibidos antes de confiar en ellos.

Puntos clave

  • Un patrón comprueba todo el valor no vacío; required se ocupa de la ausencia de valor.
  • Comprueba los códigos fijos de una organización con patrones y explica su formato de manera visible.
  • Un patrón mal formado se ignora mientras las demás restricciones siguen aplicándose.
  • Usa algo más que el color para aplicar estilos a los estados de validación.
  • Cuando se omite o elude una comprobación del navegador, la validación en el servidor es esencial.
  • formnovalidate afecta a un botón de envío; novalidate afecta al formulario.
3

Crea tablas que expliquen sus datos

Una celda de datos adquiere sentido por su fila y su columna. Las tablas HTML permiten expresar esas relaciones para que las personas puedan leer una cifra junto con los encabezados que la explican. Comienza con un título y encabezados sencillos, y después añade grupos de filas o celdas combinadas solo cuando los datos lo necesiten. Contar la cuadrícula y conectar cada valor con sus encabezados mantiene la tabla útil tanto cuando se lee en voz alta como cuando se ve.

3.1 Filas, encabezados y un título claro para la tabla

Usa una tabla cuando un valor dependa tanto de su fila como de su columna: un registro de entrenamiento, un horario o una comparación de medidas. Usa CSS para la maquetación de la página. Una disposición hecha con celdas de tabla crea relaciones engañosas entre filas y columnas para los lectores de pantalla y se adapta mal a pantallas estrechas.

Construye la estructura a partir de los datos

<table> contiene la tabla, <tr> una fila, <th> una celda de encabezado y <td> una celda de datos. Las celdas se escriben de izquierda a derecha dentro de cada fila. Una celda de datos en negrita sigue siendo una celda de datos; usa <th> para expresar un encabezado.

<table>
  <caption>Running log, week 12</caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Distance (km)</th>
      <th scope="col">Time (min)</th>
    </tr>
  </thead>
  <tbody>
    <tr><th scope="row">Monday</th><td>5.0</td><td>28</td></tr>
    <tr><th scope="row">Wednesday</th><td>7.5</td><td>45</td></tr>
    <tr><th scope="row">Saturday</th><td>10.0</td><td>62</td></tr>
  </tbody>
  <tfoot>
    <tr><th scope="row">Total</th><td>22.5</td><td>135</td></tr>
  </tfoot>
</table>

El título es el primer elemento dentro de la tabla. Indica a los lectores qué describe toda la tabla antes de que lleguen a sus valores. Un encabezado cercano puede ayudar visualmente, pero el título queda asociado a la propia tabla.

Conecta cada valor con sus encabezados

scope="col" indica que un encabezado se aplica a lo largo de una columna. scope="row" indica que se aplica a lo largo de una fila. Por tanto, el valor 7,5 pertenece a la fila «Wednesday» y a la columna «Distance (km)». Un lector de pantalla puede anunciar ese significado completo en lugar de un número aislado.

Pon las unidades en los encabezados de columna para que se apliquen de forma coherente. Todas las distancias están en kilómetros y todos los tiempos en minutos. La distancia total se obtiene de 5,0; 7,5 y 10,0, que dan 22,5 km. Los tiempos 28, 45 y 62 dan 135 min.

Da una función a cada grupo

<thead> agrupa las filas de encabezado, <tbody> los datos principales y <tfoot> el resumen después del cuerpo. Estos grupos describen la estructura y ofrecen puntos de referencia para CSS. Los navegadores insertan un <tbody> alrededor de las filas normales escritas directamente dentro de una tabla, por lo que la estructura mostrada puede diferir del código fuente sin agrupar.

Comprueba el significado además del aspecto

Cada fila aquí ocupa tres columnas. Omitir una celda de datos no indica al navegador qué valor interior falta: las celdas posteriores pueden quedar bajo el encabezado equivocado. Escribe las celdas en sus posiciones correctas y usa «0» para un cero conocido o «n/a» cuando un valor no se aplique. Una celda vacía sin explicación deja a los lectores adivinando.

Las tablas no tienen bordes predeterminados. Para obtener líneas sencillas, aplica border: 1px solid a las celdas y border-collapse: collapse a la tabla. El antiguo atributo border está obsoleto. Un borde ayuda a mostrar la cuadrícula, pero no puede proporcionar las relaciones de encabezado que faltan ni corregir un valor mal colocado.

Puntos clave

  • Las tablas expresan relaciones entre filas y columnas en los datos.
  • Usa th para encabezados y td para datos; la negrita visual no aporta semántica.
  • Coloca primero un título y usa scope para asociar encabezados sencillos.
  • Agrupa las filas con thead, tbody y tfoot, y comprueba las columnas que ocupa cada fila.
  • Pon las unidades en los encabezados y deja claro el significado de los datos ausentes.

3.2 Celdas combinadas y encabezados de varios niveles

Las celdas combinadas permiten que una entrada ocupe varias posiciones de la cuadrícula. Cambian el número de celdas nuevas que necesita una fila, así que planifica las posiciones ocupadas antes de escribir las etiquetas.

Cuenta las posiciones de un horario con celdas combinadas

Considera tres columnas: «Hora», «Lunes» y «Martes». A las 09:00, el lunes tiene «Formularios» y el martes tiene «Tablas». A las 10:00, el lunes empieza «Validación», que continúa en la fila de las 11:00. El martes tiene «Multimedia» a las 10:00 y «Contenido insertado» a las 11:00. A las 12:00, «Pausa para comer» ocupa ambos días.

<tr>
  <th scope="row">10:00</th>
  <td rowspan="2">Validation</td><td>Media</td>
</tr>
<tr>
  <th scope="row">11:00</th><td>Embeds</td>
</tr>
<tr>
  <th scope="row">12:00</th><td colspan="2">Lunch break</td>
</tr>

A las 11:00, la posición del lunes ya está ocupada desde la fila anterior. Las únicas celdas nuevas son el encabezado de hora y la entrada del martes. Añadir otra celda para el lunes desplazaría el último valor a una cuarta columna. A las 12:00, el encabezado de hora ocupa una columna y la celda de la pausa ocupa dos, tres en total.

colspan se extiende horizontalmente por columnas; rowspan se extiende verticalmente por filas. Ambos tienen uno como valor predeterminado. Al comprobar una fila, cuenta las posiciones ocupadas por celdas nuevas y por extensiones de filas anteriores.

Describe grupos de columnas

<colgroup> y <col> describen columnas y aparecen después del título, pero antes de los grupos de filas. <col span="2"> representa dos columnas. Solo un conjunto limitado de estilos se aplica mediante estos elementos, incluidos fondos, ancho, visibilidad y bordes según las reglas de bordes de tabla correspondientes. No sustituyen a los encabezados.

Para «Distancia (km)» sobre dos columnas llamadas «Prevista» y «Real», define esas dos columnas como un grupo. Asigna al encabezado superior colspan="2" scope="colgroup" y a los encabezados inferiores scope="col". La extensión controla el ancho, mientras que el ámbito indica la relación de encabezado. Un ámbito de grupo de columnas necesita un grupo de columnas correspondiente en la estructura de la tabla.

Vincula los encabezados explícitamente cuando sea necesario

Para relaciones que scope no puede expresar con claridad, asigna ID únicos a los encabezados y enuméralos en el atributo headers de la celda de datos:

<table>
  <caption>Monday distance plan</caption>
  <colgroup></colgroup>
  <colgroup span="2"></colgroup>
  <thead>
    <tr>
      <th rowspan="2" scope="col">Day</th>
      <th id="distance" colspan="2" scope="colgroup">Distance (km)</th>
    </tr>
    <tr>
      <th id="planned" scope="col">Planned</th>
      <th id="actual" scope="col">Actual</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th id="mon" scope="row">Monday</th>
      <td headers="mon distance planned">8</td>
      <td headers="mon distance actual">7.5</td>
    </tr>
  </tbody>
</table>

El valor previsto de 8 apunta a «Monday», «Distance (km)» y «Planned». El valor real de 7,5 comparte los encabezados de fila y grupo, pero apunta a «Actual». Los nombres separados por espacios deben coincidir con los ID de los encabezados, no con su texto visible.

El abbr de un encabezado puede proporcionar un texto más corto para las repeticiones, como <th abbr="Distance">Distance covered in kilometers</th>. Algunos lectores de pantalla usan esa forma abreviada. Cuando muchas extensiones o tres niveles de encabezados hacen que una tabla sea difícil de seguir, divide los datos en tablas más sencillas con títulos propios. Evita anidar una tabla dentro de una celda de otra tabla.

Puntos clave

  • Cuenta las posiciones ocupadas de la cuadrícula, incluidas las extensiones de filas anteriores.
  • Un colspan sustituye celdas vecinas; un rowspan ocupa posiciones en filas posteriores.
  • Usa grupos de columnas con scope="colgroup" para encabezados agrupados.
  • El headers de una celda enumera los ID de sus celdas de encabezado.
  • Prefiere tablas más sencillas cuando las combinaciones y los niveles de encabezados oculten las relaciones.
4

Añade contenido multimedia que se pueda ver y oír

Un reproductor es solo una parte del contenido multimedia utilizable. Los visitantes también necesitan un archivo compatible, una forma de iniciarlo y detenerlo, y acceso a su información cuando el sonido o las imágenes no están disponibles. Construye el reproductor a partir del archivo multimedia: reserva su espacio, ofrece fuentes adecuadas y adjunta subtítulos revisados o una transcripción. Las indicaciones de carga y las decisiones razonables de reproducción también ayudan a los visitantes a gestionar el tiempo y los datos que consume un vídeo.

4.1 Reproductores, reproducción y opciones de descarga

<video> y <audio> enlazan archivos multimedia a una página. El navegador descarga esos archivos independientes; el vídeo o el sonido no se almacenan dentro del HTML. Añadir controls muestra los controles de reproducción, pausa, línea de tiempo y volumen del navegador.

<video src="intro.mp4" controls width="640" height="360"
       poster="intro-poster.jpg" preload="metadata"></video>
<audio src="episode-12.mp3" controls></audio>

Sin controles, un elemento de audio no tiene reproductor visible y un vídeo no tiene botón de reproducción visible. Una página necesitaría controles mediante scripts para ofrecer ese acceso. En una página básica, conserva los controles de reproducción nativos.

Reserva el espacio con la proporción correcta

width y height aceptan números simples en píxeles CSS. Reservan espacio mientras se carga un vídeo, lo que reduce el movimiento de la página. Un vídeo de 1920 × 1080 mostrado con un ancho de 640 tiene una altura correspondiente de 360: el ancho se ha dividido entre tres, por lo que la altura también debe dividirse entre tres. Una caja de reproductor con otra forma conserva las proporciones de la imagen y añade bandas vacías.

poster proporciona una imagen fija antes de la reproducción. Sin ella, el navegador espera a recibir datos multimedia antes de poder mostrar el primer fotograma. La imagen de portada es útil cuando se precarga poco vídeo o ninguno.

Decide cuánto precargar
ValorIndicación de carga
noneNo precargar el contenido multimedia
metadataObtener información como la duración y las dimensiones
autoEl navegador puede descargar el archivo completo

Son indicaciones: el navegador puede ignorarlas. La reproducción automática también tiene prioridad sobre la precarga. none es útil para contenido multimedia largo que muchos visitantes no verán; los metadatos ayudan a mostrar la duración sin buscar intencionadamente el clip completo.

Comprende los atributos de reproducción

controls, autoplay, muted, loop y playsinline son atributos booleanos. Su presencia los activa: muted="false" sigue iniciando la reproducción silenciada. Elimina el atributo para desactivarlo.

La reproducción automática con sonido suele bloquearse hasta que el usuario interactúa, según los permisos y ajustes del navegador. Es más frecuente que se permita el vídeo silenciado; Safari en iPhone también necesita playsinline para este uso. Un clip silencioso en bucle puede usar autoplay muted loop playsinline. loop reinicia el clip cuando termina. No dependas de la reproducción automática para comunicar información esencial.

El sonido automático puede competir con un lector de pantalla y el movimiento puede distraer. El criterio 1.4.2 (A) de las WCAG 2.2 exige una forma de pausar o detener el audio automático de más de tres segundos, o controlar su volumen de forma independiente. El criterio 2.2.2 (A) trata el contenido en movimiento automático que dura más de cinco segundos junto a otro contenido, salvo que sea esencial. Mantén disponible un mecanismo de pausa; los controles nativos lo proporcionan para estos reproductores multimedia.

Calcula el coste en datos

Un clip de dos minutos a 5 megabits por segundo contiene 600 megabits. Dividir entre ocho da aproximadamente 75 megabytes antes de la sobrecarga adicional. Los clips más cortos y una indicación de precarga adecuada reducen las transferencias innecesarias. El reproductor iframe de una plataforma alojada puede trasladar la entrega fuera del servidor de tu sitio, pero los visitantes siguen descargando el contenido multimedia cuando lo ven.

Puntos clave

  • Conserva los controles nativos para que los visitantes puedan iniciar, pausar y ajustar la reproducción.
  • Usa valores numéricos de ancho y altura para reservar el espacio de un vídeo.
  • La precarga es una indicación; la reproducción automática puede tener prioridad sobre ella.
  • Los atributos booleanos se activan por su presencia.
  • Ten en cuenta las restricciones de reproducción automática y permite que los usuarios controlen el sonido o movimiento automático.
  • Un reproductor de plataforma cambia quién entrega el contenido multimedia, pero el visitante sigue teniendo que descargarlo.

4.2 Fuentes alternativas y opciones de respaldo fiables

Una extensión multimedia identifica su contenedor, la estructura de archivo que contiene la imagen y el sonido. Los códecs comprimen y decodifican los flujos de su interior. Un navegador debe admitir tanto el contenedor como sus códecs; una extensión .mp4 por sí sola no determina qué hay dentro.

Elige formatos adecuados

MP4 con vídeo H.264 y audio AAC es una opción de amplia compatibilidad en sistemas actuales habituales. WebM con vídeo VP9 o AV1 y audio Opus también tiene amplia compatibilidad y puede reducir el tamaño para una calidad determinada. Para audio, MP3 es una opción única ampliamente compatible. La compatibilidad sigue dependiendo del códec real y del sistema del usuario, así que prueba los archivos mismos.

Ofrece las fuentes por orden de prioridad
<video controls width="640" height="360" poster="tour.jpg">
  <source src="tour.webm" type="video/webm">
  <source src="tour.mp4" type="video/mp4">
  <p>Your browser cannot play this video.
    <a href="tour.mp4">Download the tour video (MP4)</a>.
  </p>
</video>
<p><a href="tour.mp4">Download the tour video (MP4)</a></p>

El navegador prueba las fuentes hijas en orden y usa la primera que puede reproducir. Aquí se prefiere WebM; MP4 ofrece otra opción si no se puede reproducir WebM. Omite src en el propio <video> cuando uses fuentes hijas. Un src en el elemento multimedia tiene prioridad y se ignora la lista de fuentes hijas.

El type es un tipo MIME que describe el archivo. Permite que el navegador omita un formato no compatible sin obtener primero datos multimedia. Un tipo incorrecto puede hacer que se omita un archivo reproducible, por lo que la declaración debe coincidir con el archivo real. Enumerar la misma codificación incompatible con otro nombre no crea una alternativa compatible.

Coloca la alternativa donde siga disponible

El contenido dentro de <video> es contenido alternativo para un navegador que no reconoce el elemento de vídeo. Un navegador moderno que lo reconoce, pero no puede reproducir ninguna fuente, no muestra ese párrafo interior como mensaje de error general. El enlace de descarga independiente fuera del reproductor sigue disponible en ese caso. Un enlace de respaldo y las fuentes alternativas resuelven fallos diferentes.

Aplica el mismo patrón al audio
<audio controls>
  <source src="episode-12.opus" type="audio/ogg; codecs=opus">
  <source src="episode-12.mp3" type="audio/mpeg">
  <p>Your browser cannot play this audio.</p>
</audio>
<p><a href="episode-12.mp3">Download episode 12 (MP3)</a></p>

Este primer archivo usa un contenedor Ogg con audio Opus. La alternativa MP3 usa audio/mpeg, el tipo MIME correcto para MP3. El navegador no puede deducir del párrafo alternativo que debe cambiar de archivo; los elementos source proporcionan esa opción. Al revisar la página, verifica las rutas, los formatos reales de los archivos y la reproducción, y después confirma por separado que funciona el enlace de descarga externo.

Puntos clave

  • La reproducción requiere compatibilidad tanto con el contenedor como con los códecs.
  • Las fuentes hijas se prueban en orden cuando el elemento multimedia no tiene src.
  • Los tipos MIME correctos ayudan a los navegadores a elegir una fuente reproducible.
  • Mantén un enlace de descarga fuera del reproductor para los fallos de fuentes en navegadores modernos.

4.3 Subtítulos para personas sordas, transcripciones y tiempos en WebVTT

La información multimedia necesita otra vía cuando una persona no puede oírla o verla. Los subtítulos para personas sordas incluyen las palabras, los hablantes y los sonidos relevantes. Los subtítulos transcriben o traducen el diálogo para quienes oyen el audio, pero necesitan ayuda para entenderlo. Una transcripción proporciona las palabras y los sonidos importantes como texto cerca del reproductor o mediante un enlace cercano con un nombre claro. La audiodescripción narra información visual importante.

Adjunta una pista de subtítulos para personas sordas
<video controls>
  <source src="intro.mp4" type="video/mp4">
  <track kind="captions" src="intro.en.vtt"
         srclang="en" label="English" default>
</video>
<p><a href="intro-transcript.html">Read the introduction transcript</a></p>

Coloca <track> después de las fuentes. src apunta a un archivo de pista de texto, kind identifica su finalidad, srclang identifica el idioma y label proporciona el texto del menú del reproductor. Una pista de subtítulos debe tener srclang; inclúyelo también para los subtítulos para personas sordas. Solo una pista debe llevar default. Sin kind, el valor predeterminado es subtitles.

Escribe el archivo de subtítulos

WebVTT es texto UTF-8 guardado con la extensión .vtt. La primera línea es WEBVTT, seguida de una línea en blanco. Cada señal tiene después una línea de tiempos y su texto, con una línea en blanco antes de la siguiente señal. Un identificador opcional puede preceder a los tiempos de una señal.

WEBVTT

00:00:01.000 --> 00:00:04.500
MAYA: Welcome to the workshop.

00:00:05.000 --> 00:00:07.250
[door closes]

00:00:07.500 --> 00:00:11.000
MAYA: Let's build our first form.

La primera señal dura 3,5 segundos, la segunda 2,25 segundos y la tercera 3,5 segundos. La señal de sonido comunica algo que oye quien escucha, aunque nadie hable.

Mantén exacta la sintaxis de los tiempos

Los minutos y segundos usan dos dígitos; los milisegundos usan tres después de un punto. Las horas pueden omitirse: 01:05.000 significa un minuto y cinco segundos. El final debe ser posterior al inicio. Una línea en blanco termina una señal, así que mantén todo su texto junto, sin una línea en blanco en medio.

SRT usa marcas de tiempo con coma, como 00:00:01,000; una pista necesita WebVTT. La conversión requiere la cabecera WebVTT y marcas de tiempo con punto, además de comprobar que el resto de las señales tenga una sintaxis válida. Cambiar el nombre de una extensión .srt no convierte su contenido.

Comprueba la entrega y la accesibilidad

Mantén la pista en el mismo origen que la página: el mismo esquema, anfitrión y puerto. Una pista de otro origen necesita un ajuste crossorigin adecuado en el vídeo y permiso de ese servidor. De lo contrario, un archivo correcto puede no cargarse.

El criterio 1.2.2 (A) de las WCAG 2.2 exige subtítulos para personas sordas en vídeos pregrabados con audio, sujeto a su excepción para alternativas multimedia. El criterio 1.2.1 (A) exige una alternativa para contenido pregrabado solo de audio, como una transcripción para un pódcast. Revisa los subtítulos automáticos para comprobar nombres, términos técnicos, cambios de hablante y sonidos antes de publicar.

Otros tipos de pista son descriptions, chapters y metadata. Los reproductores de los navegadores no suelen mostrarlos como subtítulos normales. No pongas instrucciones visibles esenciales en una pista de metadatos esperando que aparezcan en pantalla.

Puntos clave

  • Los subtítulos para personas sordas incluyen sonidos relevantes e información sobre los hablantes; los subtítulos se centran en el diálogo.
  • Adjunta un archivo .vtt con track e identifica su finalidad y su idioma.
  • Una señal WebVTT necesita marcas de tiempo válidas con punto, texto y una línea en blanco de separación.
  • Comprueba la exactitud de los subtítulos y proporciona una vía cercana a la transcripción.
  • Las pistas de otro origen necesitan tanto ajustes del navegador como permiso del servidor.
5

Inserta otra página con cuidado

Un iframe da a otra página web una ventana dentro de la tuya. Esa página trae su propio código, permisos, comportamiento de carga y dependencia de su proveedor. Da a la ventana un nombre y un tamaño útiles, y después elige cuándo se carga y qué puede hacer. Entender que el contenido insertado es un documento independiente ayuda a explicar los marcos bloqueados, las decisiones de privacidad y por qué los estilos de tu página no llegan al reproductor de otro sitio.

5.1 Un marco con título y un enlace alternativo utilizable

Un <iframe> es un marco en línea: muestra una página web independiente dentro de la página actual. Ese documento tiene su propio HTML, CSS y scripts. Los estilos de tu página pueden dimensionar el marco, pero no aplican estilos al contenido de otro documento dentro de él.

Comienza con un marco claro y dimensionado
<iframe src="https://maps.example.com/venue"
        title="Map of the venue"
        width="600" height="400" loading="lazy"></iframe>
<p><a href="https://maps.example.com/venue">Open the venue map</a></p>

src indica la página que se debe cargar. El título indica a quien usa un lector de pantalla qué hay en el marco antes de entrar en él. «Mapa del lugar» describe su finalidad; «iframe» o «contenido» no lo hacen. El enlace directo ofrece otra vía si el navegador del visitante bloquea el marco.

width y height aceptan números simples en píxeles CSS. Sin ellos, el marco predeterminado mide 300 × 150 píxeles CSS. Los navegadores también dibujan un borde predeterminado. Aplícale estilos con CSS en lugar de usar el atributo obsoleto frameborder.

Adapta el código de inserción proporcionado

Los servicios de mapas y vídeo suelen ofrecer un fragmento de inserción en sus controles para compartir. Después de pegarlo, inspecciona la URL, mejora el título, comprueba las dimensiones y elimina los atributos de presentación obsoletos. Una URL de iframe es la dirección de una página o de un reproductor de servicio, no necesariamente de un archivo multimedia directo.

Usa HTTPS para la dirección insertada. Un marco HTTP dentro de una página HTTPS es contenido mixto activo y se bloquea. Escribir un título o cambiar el tamaño del marco no puede, por sí solo, hacer que se cargue una URL insegura.

Carga en el momento adecuado

loading="lazy" retrasa un marco hasta que está cerca del área de visualización, lo que ahorra trabajo inicial para un mapa situado mucho más abajo en la página. El valor predeterminado eager inicia la carga inmediatamente. Usa la carga inmediata para contenido insertado destacado en la parte superior, de modo que los visitantes no esperen su contenido principal. La carga diferida cambia el momento; no elimina el contacto de red cuando el marco finalmente se carga.

Para ajustar un reproductor a su contenedor, CSS puede establecer su ancho al 100 % y conservar su proporción:

iframe.video-player {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 0;
}

Aplica class="video-player" al iframe correspondiente. Las dimensiones HTML siguen proporcionando información inicial, mientras que CSS controla el tamaño mostrado.

Reconoce el rechazo de un proveedor

Un sitio puede prohibir su inclusión en marcos mediante la cabecera de respuesta HTTP X-Frame-Options o una regla frame-ancestors de Content Security Policy. El navegador puede mostrar un marco vacío o un error. Estas restricciones ayudan a evitar el secuestro de clics, en el que una página enmarcada engañosa captura clics destinados a otra cosa.

El HTML de tu página no puede anular el rechazo del otro sitio. Usa la dirección de inserción permitida por el proveedor si ofrece una; de lo contrario, proporciona un enlace normal. Conserva también ese enlace para fallos futuros: si un proveedor elimina o mueve su contenido, un iframe sin cambios en tu página puede dejar de funcionar.

Puntos clave

  • Un iframe contiene un documento independiente con sus propios estilos y scripts.
  • Da a cada marco un título descriptivo y un tamaño razonable.
  • Usa carga diferida para contenido insertado fuera de pantalla y URL HTTPS.
  • Un proveedor puede rechazar la inclusión en marcos; ofrece un enlace directo cuando lo haga.

5.2 Permisos, privacidad y elección del elemento

El contenido insertado de terceros contacta con su proveedor cuando se carga, incluso antes de que un visitante pulse reproducir. Esa solicitud revela información como una dirección IP y puede implicar cookies. Decide si la página necesita ese contacto de inmediato y qué acceso necesita el documento insertado.

Retrasa el contacto cuando sea adecuado

La carga diferida retrasa un marco fuera de pantalla hasta que está cerca de ella. Una vista previa que carga el contenido insertado solo después de un clic da a los visitantes una opción más directa. Algunos servicios también ofrecen modos con mayor privacidad. Un marco del mismo sitio no contacta necesariamente con un proveedor diferente; srcdoc en línea evita obtener una página independiente, aunque los recursos referenciados por ese HTML todavía pueden realizar solicitudes de red.

Restringe el comportamiento del documento con sandbox
<iframe src="https://quiz.example.com/start"
        title="Practice quiz"
        sandbox="allow-scripts allow-forms"></iframe>

Un sandbox vacío aplica todas sus restricciones, incluido el bloqueo de scripts, envíos de formularios y ventanas emergentes, y asigna un origen opaco. Los identificadores eliminan restricciones seleccionadas. Aquí el cuestionario puede ejecutar scripts y enviar formularios, pero no se concedió allow-popups. Añade solo los identificadores que necesita el contenido; de lo contrario, una lista de permisos copiada puede anular límites útiles.

allow-same-origin permite que el documento conserve su origen normal. No lo combines con allow-scripts para contenido insertado de tu propio origen: esa combinación puede permitir que el documento elimine su entorno aislado. Un entorno aislado tampoco significa que un marco no haga solicitudes de red.

Concede por separado acceso a funciones del navegador

allow es una política de permisos para funciones como pantalla completa, imagen dentro de imagen, cámara y micrófono. Un reproductor de vídeo puede solicitar allow="fullscreen; picture-in-picture". No necesita acceso a la cámara solo porque contenga vídeo. El atributo más antiguo allowfullscreen también concede acceso a pantalla completa.

Los identificadores de sandbox regulan el comportamiento del documento; los permisos de funciones responden a otra cuestión. Conceder pantalla completa no permite por sí mismo que una página en un entorno aislado envíe un formulario o ejecute un script.

Controla la referencia y el contenido en línea

referrerpolicy="no-referrer" omite de la solicitud la dirección de la página de referencia. Con la política predeterminada habitual, una solicitud HTTPS entre orígenes envía el origen en lugar de la ruta completa; las solicitudes a un protocolo menos seguro no envían referencia. Esto controla una cabecera, no toda la información que recibe un proveedor.

srcdoc proporciona directamente el HTML del marco y tiene prioridad sobre src:

<iframe title="Message preview" sandbox
        srcdoc="<p>Preview of your message</p>"></iframe>

El entorno aislado mantiene restringida esta pequeña vista previa. Las vistas previas de HTML más generales requieren cuidado con los recursos y el marcado que permiten.

Selecciona el elemento para el recurso
RecursoElemento
Imagenimg
Archivo de audio o vídeoaudio o video
Una página web, mapa o reproductor de servicioiframe
Documento externo como un PDFobject o embed

<object> puede contener contenido alternativo, como un enlace de descarga, si no se puede mostrar el recurso. El contenido antiguo basado en complementos, como Flash, ya no funciona en los navegadores actuales habituales; Adobe puso fin al soporte de Flash Player a finales de 2020. Mantén enlaces directos junto al contenido insertado importante y comprueba periódicamente que el proveedor sigue ofreciéndolo.

Puntos clave

  • La carga de contenido de terceros contacta con su proveedor incluso antes de la reproducción.
  • Un entorno aislado comienza con restricciones; los identificadores restablecen capacidades seleccionadas.
  • Mantén separados allow-scripts y allow-same-origin para contenido del mismo origen.
  • Usa allow para las funciones necesarias del navegador y la política de referencia para la dirección de la página de referencia.
  • Elige elementos multimedia para archivos multimedia e iframes para páginas independientes.

Ejemplos de Formularios y tablas en HTML

5 Lecciones Interactivas

1

Crea un formulario de inscripción a un taller

20 pasos
Elige y conecta controles y después sigue los valores que enviará un formulario de inscripción.
  1. 1
    IntroducciónEmpieza por las respuestas que necesitas

    Una inscripción a un taller necesita un nombre, datos de contacto, la elección de una sesión, intereses opcionales y un mensaje. Cada respuesta necesita un control adecuado y una etiqueta.

    Crea el formulario por etapas: decide adónde envía los datos, elige los controles y después conecta las etiquetas y las instrucciones. Comprobarás tanto lo que puede introducir un visitante como lo que llega al programa receptor.

  2. 2
    ExplicaciónElige un destino y un método

    Usa <form action="/registrations" method="post"> para enviar una inscripción a la URL de destino. POST coloca las respuestas en el cuerpo de la solicitud y es adecuado para un envío que crea datos almacenados.

    La conexión sigue necesitando HTTPS para el cifrado. Un método por sí solo no hace que la información sea privada, y el HTML no almacena la inscripción; lo hace el programa receptor.

  3. 3
    EjemploDa a la respuesta una clave de datos

    Empieza con <input id="attendee" name="attendee">. Si el visitante introduce «Nora», el control aporta attendee=Nora.

    El name indica al programa receptor qué respuesta tiene. El id identifica el campo en la página. Eliminar el nombre puede dejar un cuadro que parece funcionar, pero que no aporta nada al envío. Una etiqueta posterior se conectará mediante el id.

  4. 4
    DesafíoPredice los campos que se envían

    Un formulario tiene <input name="guest" value="Nora">, <input name="notes" value=""> y una casilla de verificación sin marcar llamada updates. ¿Qué campos aportan datos?

    ---reveal---

    Los campos de texto aportan guest=Nora y notes=. La casilla sin marcar no aporta ningún par. Un valor de texto vacío es diferente de una casilla omitida: uno identifica un campo sin texto; la otra está ausente de los datos enviados.

  5. 5
    ConsejoHaz que el envío sea deliberado

    Añade <button type="submit">Register</button>. Un botón dentro de un formulario envía por defecto, así que indicar el tipo explícitamente deja clara la intención.

    Si más adelante añades un botón para una acción mediante un script, usa type="button". Un botón de restablecimiento recupera los valores iniciales y puede borrar todo lo que escribió el visitante. Pulsar Intro en un campo de una línea también puede activar el envío, por lo que el formulario debe funcionar sin depender de un clic del ratón.

  6. 6
    ExplicaciónElige tipos de entrada para el contacto

    Usa type="email" para la dirección de correo electrónico y type="tel" para un número de teléfono opcional. Estos tipos orientan la elección del teclado en teléfonos, pero sus comprobaciones son diferentes.

    Email comprueba la sintaxis, no si existe el buzón. Tel no impone ningún formato de teléfono. Un campo de contraseña oculta los caracteres en pantalla, pero sigue necesitando HTTPS durante el envío. Elige los tipos por la información que representan, no solo por el teclado que quieres.

  7. 7
    EjemploMantén los códigos como texto

    Supón que el taller envía a sus miembros un código de dígitos. Usa type="text" inputmode="numeric" para él. La indicación de teclado numérico facilita la entrada de dígitos sin convertir el código en una cantidad.

    Un campo number puede ofrecer botones de incremento y un comportamiento basado en cantidades, que no son adecuados para un identificador. inputmode por sí mismo no comprueba nada; un formato de código fijo puede tener una regla de validación independiente.

  8. 8
    ExplicaciónCrea un grupo de botones de opción para elegir una sesión

    Ofrece tres sesiones con campos de opción que usen todos name="session". Asígnales valores como morning, afternoon y evening.

    Elegir el botón de la tarde aporta session=afternoon y desmarca la elección anterior del grupo. Los nombres diferentes permitirían que varias sesiones siguieran seleccionadas. Usa casillas de verificación separadas para intereses independientes, ya que los visitantes pueden querer elegir más de uno.

  9. 9
    DesafíoCorrige un grupo de selección única

    Dos botones de opción de sesión usan name="morning" value="morning" y name="afternoon" value="afternoon". Un visitante puede seleccionar ambos. ¿Qué cambio hace que formen un solo grupo?

    ---reveal---

    Da a ambos el mismo nombre, como name="session", y conserva sus valores diferentes. Los nombres compartidos establecen el grupo; los valores distintos identifican la sesión elegida. Hacer que solo coincidan sus id crearía identificadores duplicados en la página sin corregir la agrupación.

  10. 10
    Idea claveDistingue la fecha mostrada de su valor

    Un selector de fecha puede mostrar el mismo día en distintos órdenes según el dispositivo. Un campo de tipo date sigue enviando un valor fijo de año-mes-día, como 2026-11-18.

    La visualización sigue la configuración regional del visitante; la solicitud no copia esa cadena mostrada. Los campos de fecha y hora no proporcionan una zona horaria. Por tanto, una cita necesita suficiente contexto visible para que el visitante sepa a qué ubicación corresponde la hora.

  11. 11
    EjemploOfrece una elección fija obligatoria

    Una lista larga de lugares para el taller es adecuada para un select. Dale una primera opción vacía, como <option value="">Choose a location</option>, y añade required al select.

    Cada opción real tiene su propio valor de envío. Elegir <option value="studio">Main studio</option> envía el par estable de clave y valor location=studio cuando el select se llama location. La etiqueta visible puede seguir siendo descriptiva.

  12. 12
    EjemploDeja espacio para un mensaje

    Añade <textarea id="message" name="message" rows="5"></textarea> para una respuesta más larga. El texto inicial va entre sus etiquetas; las etiquetas juntas mantienen aquí vacío el valor inicial.

    Las filas controlan la altura visible, no la longitud máxima de la respuesta. Un datalist cumple otra función: vincúlalo mediante el list de un campo de entrada para ofrecer sugerencias y permitir otras respuestas. No puede imponer las opciones fijas de un select.

  13. 13
    DesafíoElige entre sugerencias y respuestas fijas

    El taller solo permite los lugares de su lista, pero alguien sustituye el select por un campo de texto vinculado a un datalist. ¿Puede ahora el visitante escribir un lugar que no esté en la lista?

    ---reveal---

    Sí. Un datalist ofrece sugerencias sin limitar la respuesta. Conserva un select cuando los valores permitidos sean exactamente las opciones proporcionadas. Usa un datalist cuando deba seguir siendo posible otra respuesta, como una ciudad que no esté entre las sugerencias habituales.

  14. 14
    ConexiónMuestra el estado sin recoger una respuesta

    Una barra de progreso puede mostrar cuánto ha avanzado el procesamiento de la inscripción. Un indicador de medida puede mostrar una medida dentro de un intervalo conocido, como el uso del almacenamiento.

    Ninguno es un control para introducir respuestas. Usa <progress value="70" max="100">70%</progress> para indicar cuánto se ha completado una tarea y dale un texto explicativo. Para un grupo de intereses opcionales independientes, usa casillas de verificación para que los visitantes puedan cambiar y enviar sus elecciones.

  15. 15
    EjemploConecta una etiqueta visible

    Escribe <label for="attendee">Name (required)</label> junto al campo con id="attendee". El valor de for debe coincidir exactamente con el id, incluidas las mayúsculas y minúsculas.

    Al hacer clic en la etiqueta, el campo debería recibir el foco. Mantén la etiqueta visible mientras se escribe; un texto de marcador de posición no puede cumplir esa función. El texto que indica que el campo es obligatorio informa al usuario de lo que se espera, mientras que el atributo required hace que el navegador exija un valor.

  16. 16
    ExplicaciónDa a las opciones una pregunta compartida

    Rodea los botones de opción de sesión con un fieldset cuyo primer elemento hijo sea <legend>Session</legend>. Mantén una etiqueta independiente para cada opción.

    La leyenda explica la pregunta compartida; las etiquetas dan nombre a sus respuestas. Para los campos de contacto, los valores de autocompletado correctos, como name, email y tel, ayudan al navegador a ofrecer datos guardados. Un texto de ayuda sobre el formato situado cerca se puede vincular mediante aria-describedby al id de ese texto.

  17. 17
    DesafíoEncuentra la conexión de etiqueta incorrecta

    El marcado tiene <label for="contact">Email</label> y <input id="email" name="contact" type="email">. ¿Por qué hacer clic en la etiqueta no da el foco a ese campo?

    ---reveal---

    El valor de for coincide con el name, pero no con el id. Cámbialo a for="email" o elige un id único nuevo que coincida. El name ya sirve para el envío, por lo que cambiar la conexión de la etiqueta no tiene por qué cambiar la clave de datos que espera el programa receptor.

  18. 18
    ConsejoAñade una carga de archivos con su codificación

    Si la inscripción necesita un documento, añade un campo type="file" con nombre y establece enctype="multipart/form-data" en el formulario POST. Esta codificación transporta el contenido del archivo.

    Un filtro accept puede orientar el selector de archivos, pero no determina lo que recibirá el servidor. Recuerda también que los controles desactivados se omiten, mientras que los campos de solo lectura compatibles se envían. Usa el atributo que corresponda al comportamiento de datos previsto.

  19. 19
    DesafíoComprueba el formulario completo

    Un campo de ubicación etiquetado solo ofrece sugerencias de datalist y el campo de correo electrónico tiene un id, pero no un name. El visitante debe elegir un lugar de la lista y el servidor necesita el correo electrónico. ¿Qué dos correcciones hacen falta?

    ---reveal---

    Usa un select para las opciones fijas de ubicación y añade un name al campo de correo electrónico. El select controla qué opciones se ofrecen; el name da al correo electrónico una clave para el envío. Una etiqueta visible por sí sola no corrige ninguno de los dos problemas.

  20. 20
    RepasoLee el formulario en dos direcciones

    Desde el lado del visitante, comprueba el tipo de control, la etiqueta visible, la pregunta compartida y las instrucciones. Desde el lado del servidor, comprueba el destino, el método, los nombres y los valores aportados.

    Después, haz clic en cada etiqueta y recorre el formulario con Tab. Estas comprobaciones detectan fallos diferentes: un formulario puede ser fácil de rellenar y aun así omitir datos, o enviar datos correctos mientras resulta difícil de entender.

2

Depura las reglas de validación de un formulario

15 pasos
Sigue los valores ausentes, las longitudes, los incrementos y los formatos fijos antes de determinar por qué un envío pasa o falla.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónSigue las comprobaciones que bloquean el envío
  2. 2
    ExplicaciónHaz obligatorio un nombre de usuario
  3. 3
    EjemploComprueba por separado la presencia y la longitud
  4. 4
    DesafíoHaz que el campo sea opcional
  5. 5
    ConsejoPrueba la entrada del usuario, no solo el valor predeterminado
  6. 6
    EjemploAplica primero el intervalo
  7. 7
    EjemploCuenta desde la base real
  8. 8
    DesafíoDistingue el incremento del máximo
  9. 9
    ConexiónInterpreta los incrementos de hora en segundos
  10. 10
    ExplicaciónComprueba el código fijo de la organización
  11. 11
    DesafíoEncuentra un patrón ignorado
  12. 12
    ConsejoExplica y muestra el error
  13. 13
    Idea claveUna comprobación útil no garantiza la confianza en los datos
  14. 14
    DesafíoDiagnostica un conjunto de fallos diferentes
  15. 15
    RepasoUsa una lista breve de pruebas de límites
3

Crea y comprueba un horario de sesiones

11 pasos
Crea una tabla legible y después combina celdas sin romper la cuadrícula ni las relaciones de encabezado.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPlanifica la tabla antes de sus etiquetas
  2. 2
    ExplicaciónDa nombre a la tabla y a sus columnas
  3. 3
    EjemploEscribe una fila de datos completa
  4. 4
    DesafíoCorrige un encabezado que solo es visual
  5. 5
    ConsejoDeja claro el significado de las celdas vacías
  6. 6
    EjemploHaz que una sesión dure dos filas
  7. 7
    DesafíoCuenta una fila debajo de un rowspan
  8. 8
    EjemploExtiende la pausa de comida por ambas salas
  9. 9
    ExplicaciónVincula una celda con encabezados de varios niveles
  10. 10
    DesafíoCorrige a la vez la alineación y el significado
  11. 11
    RepasoSigue un valor a través de la tabla
4

Publica un vídeo corto con subtítulos para personas sordas

17 pasos
Crea un reproductor nativo, ofrece archivos alternativos y adjunta una pista de subtítulos WebVTT que funcione.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPublica la información además del archivo
  2. 2
    EjemploReserva espacio para un reproductor con controles
  3. 3
    ExplicaciónUsa una indicación de carga de forma deliberada
  4. 4
    DesafíoDesactiva un ajuste booleano
  5. 5
    ConsejoPermite pausar el contenido multimedia automático
  6. 6
    ExplicaciónComprueba el contenedor y los códecs
  7. 7
    EjemploAñade primero la fuente preferida
  8. 8
    DesafíoEncuentra las alternativas que no se usan
  9. 9
    Idea claveMantén una alternativa fuera del reproductor
  10. 10
    ExplicaciónElige subtítulos para personas sordas que incluyan información sonora
  11. 11
    EjemploEscribe la primera señal
  12. 12
    EjemploAñade una señal de sonido relevante
  13. 13
    EjemploAdjunta el archivo después de las fuentes
  14. 14
    DesafíoConvierte correctamente una marca de tiempo
  15. 15
    ConsejoPrueba la pista y la transcripción
  16. 16
    DesafíoCorrige dos fallos de acceso independientes
  17. 17
    RepasoComprueba toda la vía de acceso al contenido multimedia
5

Revisa un mapa y un cuestionario insertados

12 pasos
Da nombre y tamaño a un marco, elige su comportamiento de carga y limítalo a las capacidades que necesita su contenido.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónTrata el contenido insertado como otro documento
  2. 2
    EjemploDa nombre al mapa antes de cargarlo
  3. 3
    ExplicaciónRetrasa la carga de un mapa situado bajo el contenido principal
  4. 4
    ConsejoInspecciona el código de inserción copiado
  5. 5
    DesafíoReconoce la regla de inclusión en marcos de un servidor
  6. 6
    ExplicaciónEmpieza el cuestionario con restricciones
  7. 7
    Idea claveMantén bajo control el origen y los scripts
  8. 8
    DesafíoConcede al cuestionario solo lo que necesita
  9. 9
    ConexiónDistingue la privacidad de una cabecera de referencia
  10. 10
    ExplicaciónElige un elemento para el recurso real
  11. 11
    DesafíoRevisa un contenido insertado que ha cambiado
  12. 12
    RepasoRevisa el marco como una pequeña dependencia

Ejercicios de Formularios y tablas en HTML

40 Preguntas de Práctica en 4 sets

Set 1: Recoge y envía las respuestas adecuadas10 Preguntas de Práctica

Pregunta 1 de 10

Un campo rellenado tiene id="visitor", pero no tiene name. ¿Por qué su texto está ausente de los datos enviados del formulario?
  1. El formulario necesita POST para incluir cualquier campo de texto.
  2. El campo necesita un nombre para aportar una clave de datos.
  3. El campo necesita required para incluir su valor en los datos.
  4. El id debe coincidir con la dirección de la página receptora.
Mostrar respuestaOcultar respuesta
Respuesta: B
El navegador construye los datos enviados a partir de controles con nombre, por lo que este campo necesita un atributo name. Su id identifica el elemento en la página y puede conectar una etiqueta, pero no proporciona una clave de envío. Cambiar la solicitud de GET a POST no haría que este control sin nombre aportara su texto.

Pregunta 2 de 10

Un sitio recoge un código de equipo como «00482». ¿Qué configuración de entrada es adecuada para ese identificador y sugiere un teclado de dígitos?
  1. type="number" step="1"
  2. type="range" min="0"
  3. type="tel" multiple
  4. type="text" inputmode="numeric"
Mostrar respuestaOcultar respuesta
Respuesta: D
El código de equipo es texto que identifica un elemento, por lo que un campo de texto conserva esa función, incluidos los ceros iniciales. El modo de entrada numérico sugiere un teclado de dígitos sin el comportamiento de un campo numérico. Un campo numérico trata la entrada como una cantidad y puede mostrar controles para aumentarla o reducirla.

Pregunta 3 de 10

La etiqueta usa for="address"; el campo de correo electrónico usa id="email" name="address". ¿Qué cambio conecta esta etiqueta sin cambiar la clave de los datos enviados?
  1. Cambiar la etiqueta a for="email".
  2. Cambiar el campo a type="text".
  3. Cambiar el campo a name="email".
  4. Cambiar la etiqueta a name="address".
Mostrar respuestaOcultar respuesta
Respuesta: A
Una etiqueta explícita se conecta mediante el id del control, por lo que for="email" crea la coincidencia que falta. El nombre puede seguir siendo address, conservando la clave que espera el programa receptor. Cambiar solo el nombre dejaría la etiqueta apuntando a un id que aún no existe.

Pregunta 4 de 10

Un select de entrega es obligatorio y su primera opción seleccionada es <option value="">Choose delivery</option>. ¿Qué ocurre si el usuario envía el formulario sin elegir otra opción?
  1. El texto visible de la indicación se envía como valor.
  2. El navegador envía la primera opción que no está vacía.
  3. La selección vacía bloquea el envío normal del formulario.
  4. El select se omite mientras se envía el formulario.
Mostrar respuestaOcultar respuesta
Respuesta: C
El select obligatorio de selección única no es válido mientras su primera opción vacía siga seleccionada, por lo que se bloquea el envío normal. El texto de la indicación no se convierte en el valor porque se proporcionó un valor vacío explícito. El navegador no elige en silencio otro método de entrega por el usuario.

Pregunta 5 de 10

Un formulario GET tiene como destino /lookup y contiene un campo de texto name="term" con «css grid», una casilla sin marcar name="archived" value="yes" y un campo desactivado name="region" value="east". ¿Qué URL de solicitud resulta?
  1. /lookup?term=css+grid&archived=no&region=east
  2. /lookup?term=css+grid
  3. /lookup?term=css+grid&archived=&region=
  4. /lookup?term=css+grid&region=east
Mostrar respuestaOcultar respuesta
Respuesta: B
El campo de texto con nombre aporta su valor actual, con el espacio codificado como +. Tanto la casilla sin marcar como el campo desactivado se omiten, por lo que solo queda term=css+grid. Un valor desactivado no se envía solo porque aparezca en el HTML, y una casilla sin marcar no crea automáticamente un valor no.

Pregunta 6 de 10

Dos botones de opción ofrecen «En línea» y «Presencial», pero ambos permanecen marcados. Sus nombres son online y onsite. ¿Cómo debe cambiar la agrupación?
  1. Dar a ambos un nombre compartido y valores diferentes.
  2. Dar a ambos un id compartido y nombres diferentes.
  3. Dar required a ambos y conservar nombres diferentes.
  4. Dar a ambos un valor compartido y nombres diferentes.
Mostrar respuestaOcultar respuesta
Respuesta: A
Los botones de opción pertenecen a un mismo grupo de selección mediante un nombre compartido. Dales el mismo nombre, como attendance, y valores diferentes que identifiquen las dos modalidades. Required controla si un grupo necesita una selección; no une en un solo grupo botones con nombres distintos.

Pregunta 7 de 10

Un campo de ciudad ofrece sugerencias habituales, pero debe aceptar otras ciudades escritas. ¿Qué configuración de controles es adecuada?
  1. Un select que contenga las opciones de ciudades habituales.
  2. Un grupo de botones de opción con las ciudades habituales.
  3. Un campo vinculado a un datalist de sugerencias.
  4. Un campo de texto con un patrón limitado a las ciudades sugeridas.
Mostrar respuestaOcultar respuesta
Respuesta: C
Un datalist sugiere valores a un campo de texto vinculado sin limitar la entrada a esas sugerencias. Esto es adecuado para una pregunta abierta sobre una ciudad con algunas respuestas habituales. Un select restringiría las opciones normales a las que contiene, por lo que sustituir el datalist por un select cambiaría lo que pueden introducir los visitantes.

Pregunta 8 de 10

Un campo de texto opcional tiene minlength="5". ¿Qué ocurre con su comprobación de longitud cuando el usuario lo deja vacío?
  1. Falla dado que cero es inferior a cinco.
  2. Falla dado que minlength implica required.
  3. Mide en su lugar el texto del marcador de posición.
  4. Pasa porque el campo está vacío.
Mostrar respuestaOcultar respuesta
Respuesta: D
La longitud mínima no rechaza un campo opcional vacío, por lo que esta comprobación de longitud pasa. Una vez que el usuario introduce texto, el valor proporcionado debe cumplir el mínimo. Required es una regla de presencia independiente; añádelo cuando también deba bloquearse la omisión, en lugar de esperar que minlength exija una respuesta.

Pregunta 9 de 10

Un formulario para documentos usa GET con un campo de archivo con nombre y la codificación predeterminada. Un botón de ayuda también está enviando el formulario. ¿Qué par de cambios permite una carga normal del contenido del archivo y evita que el botón de ayuda envíe el formulario?
  1. Usar POST con codificación multiparte; asignar al botón de ayuda el tipo button.
  2. Usar POST con codificación predeterminada; asignar al botón de ayuda el tipo reset.
  3. Mantener GET con codificación multiparte; asignar al botón de ayuda el tipo button.
  4. Usar POST con codificación multiparte; eliminar el tipo del botón de ayuda.
Mostrar respuestaOcultar respuesta
Respuesta: A
Una carga del contenido de un archivo necesita POST y enctype="multipart/form-data", mientras que un botón de ayuda que no envíe el formulario necesita type="button". Esto corrige comportamientos independientes. POST con la codificación predeterminada sigue sin transportar el contenido del archivo, y omitir el tipo del botón de ayuda conserva su comportamiento normal de envío dentro de un formulario.

Pregunta 10 de 10

Un campo de texto contiene required="false" minlength="3". El autor quiere que sea opcional y que cualquier respuesta introducida tenga al menos tres caracteres. ¿Qué debe cambiar?
  1. Eliminar minlength, pero conservar required="false".
  2. Sustituir required por required="optional".
  3. Eliminar required y conservar minlength="3".
  4. Sustituir minlength por maxlength="3".
Mostrar respuestaOcultar respuesta
Respuesta: C
Elimina required por completo y conserva la longitud mínima. Required es booleano: su presencia activa el ajuste incluso cuando su valor dice «false». Conservar minlength permite omitir la respuesta y sigue rechazando una respuesta proporcionada demasiado corta; cambiarlo a maxlength impondría una regla diferente.
Set 2: Comprueba intervalos, patrones y estructura de tablas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Qué unidad usa step="300" en un campo de tipo time?
  1. Días
  2. Minutos
  3. Milisegundos
  4. Segundos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un campo numérico tiene min="2" max="14" step="4". ¿Qué valor introducido cumple todas estas restricciones?
  1. 4
  2. 8
  3. 10
  4. 14,5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un campo de hora tiene min="08:20" max="10:20" step="1200". ¿Cuántos valores de hora no vacíos cumplen estos ajustes?
  1. 7
  2. 6
  3. 8
  4. 9
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un código obligatorio usa pattern="[A-Z]{2}-[0-9]{3}". ¿Qué código introducido pasa la validación?
  1. «PZ-7314»
  2. «PZ-731»
  3. «PZ-73»
  4. «PZ731»
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un campo de correo electrónico es obligatorio y tiene un patrón no válido "[". Un usuario introduce «ravi». ¿Qué ocurre en el envío normal?
  1. Se envía el valor porque se ignora el patrón.
  2. Se envía el valor porque se cumple required.
  3. Se bloquea solo porque el patrón está mal formado.
  4. Se bloquea porque aún falla la comprobación de sintaxis del correo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una fila de tabla enumera la temperatura y la humedad de un sensor. ¿Qué elemento debe dar nombre a ese sensor al comienzo de la fila?
  1. <td scope="row">
  2. <th scope="row">
  3. <th scope="col">
  4. <caption scope="row">
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una tabla de medidas tiene los encabezados «Muestra», «Masa (kg)» y «Tiempo (min)». Una fila del cuerpo es <tr><th scope="row">B</th><td>18</td></tr> y pretende mostrar una masa no disponible y un tiempo de 18 minutos. ¿Cómo debe corregirse la fila?
  1. Poner 18 en la primera celda y eliminar el encabezado de fila.
  2. Añadir colspan="2" a la celda que contiene 18.
  3. Insertar una celda de masa con «n/a» antes de la celda con 18.
  4. Sustituir el encabezado de tiempo por una celda de datos vacía.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una tabla de cuatro columnas tiene los encabezados «Hora», «A», «B» y «C». En una fila, una celda de A se extiende a la fila siguiente. Esa fila siguiente necesita un encabezado de hora y una entrada compartida para B y C. ¿Qué celdas nuevas debe contener?
  1. Un th de hora y un td con colspan="2".
  2. Un th de hora y un td con colspan="3".
  3. Un th de hora y dos celdas td, cada una con colspan="2".
  4. Un th de hora, un td vacío y un td con colspan="2".
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un clip silencioso en bucle tiene controles y muted="false". El autor quiere desactivar el ajuste inicial de silencio. ¿Qué cambio lo consigue?
  1. Añadir autoplay="false" al vídeo.
  2. Eliminar controls del vídeo.
  3. Establecer muted="off" en el vídeo.
  4. Eliminar muted del vídeo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Se ofrece un archivo MP3 como fuente de audio. ¿Qué tipo MIME debe declarar su fuente?
  1. audio/mp3
  2. audio/mpeg
  3. video/mpeg
  4. audio/ogg
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Haz utilizables el contenido multimedia y las páginas insertadas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Qué atributo hace visibles los controles de reproducción propios del navegador en un elemento de audio?
  1. controls
  2. poster
  3. preload
  4. playsinline
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un vídeo enumera fuentes hijas WebM y después MP4, pero también tiene su propio src="preview.mp4". ¿Por qué el orden de las fuentes hijas no determina la reproducción?
  1. Los archivos MP4 siempre tienen prioridad sobre WebM en los navegadores actuales.
  2. Las fuentes hijas necesitan un nombre compartido para formar una lista.
  3. El src del elemento padre tiene prioridad sobre las fuentes hijas.
  4. La primera fuente debe repetir la ruta del archivo del elemento padre.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un subtítulo se muestra desde 00:00:12.250 hasta 00:00:16.000. ¿Durante cuánto tiempo es visible esa señal?
  1. 4,25 segundos
  2. 3,75 segundos
  3. 3,25 segundos
  4. 4,75 segundos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un vídeo enumera archivos de fuente hijos y una pista de otro origen. El vídeo también tiene src="old.mp4". La pista tiene texto WebVTT válido, pero su servidor no envía permiso entre orígenes y el vídeo no tiene un ajuste crossorigin. ¿Qué corrección completa permite seleccionar las fuentes hijas como se pretende y cargar la pista de otro origen?
  1. Conservar el src padre; activar crossorigin en el vídeo y el permiso del servidor.
  2. Conservar el src padre; mover la pista antes de las fuentes hijas.
  3. Eliminar el src padre; añadir default a la pista sin cambios en el servidor.
  4. Eliminar el src padre; activar crossorigin en el vídeo y el permiso del servidor.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un navegador admite vídeo, pero no puede reproducir el archivo ofrecido. El vídeo tiene su propio src que apunta a ese archivo y, además, una fuente hija que el navegador sí puede reproducir. Su único enlace de descarga está dentro del vídeo. ¿Qué cambios de marcado permiten usar esa alternativa y mantener una opción de respaldo visible y fiable?
  1. Eliminar el src padre; mantener un enlace de descarga fuera del vídeo.
  2. Conservar el src padre; mover el enlace de descarga fuera del vídeo.
  3. Eliminar el src padre; dejar el enlace de descarga solo dentro del vídeo.
  4. Conservar el src padre; colocar la fuente hija después del enlace interior.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un iframe contiene un mapa del lugar de un evento. ¿Qué título identifica mejor su finalidad para una persona que usa un lector de pantalla?
  1. «Contenido insertado»
  2. «Mapa del lugar del evento»
  3. «Marco 1 de esta página»
  4. «Mapa de 600 por 400 píxeles»
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un cuestionario enmarcado debe ejecutar scripts y enviar su formulario mientras las ventanas emergentes permanecen bloqueadas. ¿Qué valor de sandbox se ajusta a esas necesidades?
  1. allow-forms allow-popups
  2. allow-scripts allow-popups
  3. allow-scripts allow-forms
  4. allow-same-origin allow-forms
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un marco de vista previa del mismo origen ejecuta HTML no confiable. Tiene sandbox="allow-scripts allow-same-origin", allow="camera" y referrerpolicy="no-referrer". La vista previa necesita scripts, pero no cámara. ¿Qué cambios de permisos restablecen un aislamiento útil y conservan la ejecución de scripts?
  1. Eliminar camera; conservar ambos identificadores de sandbox y no-referrer.
  2. Eliminar allow-scripts; conservar camera y allow-same-origin.
  3. Eliminar no-referrer; conservar camera y ambos identificadores de sandbox.
  4. Eliminar camera y allow-same-origin; conservar allow-scripts.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un textarea tiene rows="4" cols="35" y no tiene atributos de longitud. ¿Por qué un visitante puede escribir más de 140 caracteres?
  1. Rows y cols establecen el tamaño visible, no la longitud de entrada.
  2. Los textarea siempre ignoran todas las reglas posibles de longitud.
  3. Cols cuenta palabras mientras rows cuenta párrafos.
  4. El método del formulario aumenta el límite de entrada de texto.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Un fieldset de entrega tiene una leyenda, pero sus botones de opción tienen nombres diferentes y no tienen etiquetas. Un campo de correo electrónico independiente tiene un id y un texto de marcador de posición, pero no tiene nombre. La página debe permitir una sola elección de entrega, identificar cada control y enviar el correo electrónico. ¿Qué corrección cubre las tres necesidades?
  1. Compartir el nombre de los botones; etiquetar botones y correo; dejar el correo sin nombre.
  2. Compartir el id de los botones; etiquetar botones y correo; añadir un nombre al correo.
  3. Compartir el nombre de los botones; conservar solo la leyenda; añadir un nombre al correo.
  4. Compartir el nombre de los botones; etiquetar botones y correo; añadir un nombre al correo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Depura problemas combinados de HTML10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un mapa situado mucho más abajo del contenido principal no necesita cargarse hasta que el visitante se acerque a él. ¿Qué ajuste de iframe solicita ese comportamiento?
  1. loading="eager"
  2. preload="none"
  3. sandbox="lazy"
  4. loading="lazy"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un campo numérico tiene value="0.25", no tiene min ni atributo step. El usuario sustituye su valor. ¿Qué entrada cumple la regla de incremento predeterminada?
  1. 1,00
  2. 1,25
  3. 1,50
  4. 2,00
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un código de texto obligatorio debe coincidir con [A-Z]{2}[0-9]{2}. El formulario tiene activada la validación normal. Su botón de envío «Guardar borrador» tiene formnovalidate, mientras que «Enviar» no lo tiene. El código es «xy8». ¿Qué ocurre con cada botón?
  1. Ambos botones bloquean el envío hasta que el código coincida.
  2. Enviar lo envía; Guardar borrador bloquea el código que no coincide.
  3. Guardar borrador lo envía; Enviar bloquea el código que no coincide.
  4. Ambos botones lo envían porque el código no está vacío.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Una tabla de tres columnas tiene un encabezado en la primera columna que se extiende por dos filas. En la segunda fila, un td ocupa las dos columnas restantes. El td debe hacer referencia a encabezados con los id r, planned y actual. ¿Qué marcado es adecuado para la segunda fila?
  1. <tr><td colspan="2" headers="r planned actual">12</td></tr>
  2. <tr><td></td><td colspan="2" headers="r planned actual">12</td></tr>
  3. <tr><td colspan="3" headers="r planned actual">12</td></tr>
  4. <tr><td colspan="2" headers="r,planned,actual">12</td></tr>
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un formulario POST tiene un campo con name="member" value="K8" readonly, un campo de texto vacío con nombre note y una casilla sin marcar con nombre copy. La solicitud usa HTTPS. ¿Qué comportamiento de los datos debe esperar el programa receptor?
  1. Solo llega member; HTTPS elimina los campos vacíos.
  2. Llegan member, note y copy con sus valores mostrados.
  3. Solo llega note; se omiten los valores de solo lectura.
  4. Llegan member y note vacío; se omite copy.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una pista de texto de un vídeo está destinada a comunicar tanto instrucciones habladas como el sonido importante de una alarma. ¿Qué tipo de pista identifica esa finalidad?
  1. captions
  2. subtitles
  3. chapters
  4. metadata
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un reproductor de terceros usa no-referrer y carga diferida debajo de la primera pantalla de la página. Un visitante se desplaza cerca de él, pero nunca pulsa reproducir. ¿Qué ocurre cuando se carga el iframe?
  1. El proveedor recibe la ruta completa de la página, pero no una dirección de red.
  2. No se realiza ninguna solicitud porque el visitante no ha pulsado reproducir.
  3. Se contacta con el proveedor sin la dirección de la página de referencia.
  4. No se realiza ninguna solicitud porque no-referrer bloquea todo contacto.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un campo opcional de apodo tiene minlength="4". Un usuario escribe tres espacios normales. ¿Supera la regla de longitud y por qué?
  1. Sí; los campos opcionales omiten todas las restricciones de longitud.
  2. No; el valor proporcionado tiene menos de cuatro caracteres.
  3. No; los espacios siempre se eliminan antes de comprobar la longitud.
  4. Sí; los espacios cumplen el mínimo de cualquier campo opcional.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un encabezado de tabla dice «Longitud (m)» y una celda de datos debajo contiene 2.4. ¿Qué unidad corresponde a ese valor?
  1. Centímetros
  2. Milímetros
  3. Kilómetros
  4. Metros
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Un vídeo tiene src="outdated.mov" y fuentes hijas para WebM no compatible y MP4/H.264/AAC compatible, en ese orden. Su único enlace de descarga está anidado dentro del reproductor. ¿Qué cambios permiten que este navegador seleccione el archivo hijo reproducible y mantenga visible una alternativa si la reproducción sigue fallando?
  1. Conservar el src padre, preferir WebM y mover el enlace fuera.
  2. Eliminar el src padre y poner el enlace de descarga fuera.
  3. Eliminar el src padre, pero mantener el enlace solo dentro del vídeo.
  4. Conservar el src padre y sustituir los tipos de fuente por video/mp4.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

79 Términos Clave, cada uno con su definición

A

Abreviación del encabezado
Una abreviación del encabezado es un texto más corto proporcionado mediante abbr en una celda de encabezado, que algunos lectores de pantalla usan al repetir ese encabezado.
El encabezado largo «Distancia recorrida en kilómetros» puede proporcionar abbr="Distance" para una repetición más corta.
Atributo action
El atributo action especifica la URL a la que un formulario envía sus datos; si se omite, el destino es la URL de la página actual.
Establecer action="/messages" dirige el envío de un mensaje a la dirección del sitio que recibe mensajes.
Atributo booleano
Un atributo booleano activa un ajuste HTML por su presencia; el valor escrito no activa ni desactiva el ajuste.
Un campo con required="false" sigue siendo obligatorio, por lo que hay que eliminar el atributo para hacerlo opcional.
Atributo headers
El atributo headers vincula una celda de datos con celdas de encabezado específicas mediante una lista de sus ID únicos separados por espacios.
Una celda que usa headers="mon distance planned" apunta a tres encabezados que explican conjuntamente su valor.
Atributo required
El atributo required es un atributo booleano que hace que un control compatible necesite un valor o una selección para superar la validación.
La casilla de verificación etiquetada «Acepto las condiciones» debe estar marcada cuando lleva required.
Audiodescripción
Una audiodescripción narra detalles visuales importantes que una persona necesita para comprender un vídeo sin ver sus imágenes.
La descripción puede explicar una demostración silenciosa en pantalla que el diálogo normal nunca menciona.
Autocompletado
El autocompletado es un atributo que describe la finalidad de un campo para que el navegador pueda ofrecer información guardada adecuada para rellenarlo.
Un campo de teléfono usa autocomplete="tel" para que el navegador pueda sugerir el número de teléfono guardado del usuario.

Á

Ámbito del encabezado
Un ámbito del encabezado indica la dirección o el grupo al que se aplica un encabezado de tabla, por ejemplo, a lo largo de una fila o de una columna.
En una tabla de distancias diarias, el nombre de cada día usa scope="row", mientras que el encabezado de distancia usa scope="col" para los valores situados debajo.
Área de texto
Un área de texto es un control de texto de varias líneas cuyo valor inicial se escribe entre las etiquetas de apertura y cierre de textarea.
Un cuadro de mensaje establece rows="5" para la altura visible, mientras que maxlength limita por separado el texto introducido.

B

Base del incremento
Una base del incremento es el punto de partida de los incrementos, tomado de min, después de un value válido en HTML y, por último, de la base predeterminada del tipo de entrada.
Un campo numérico con min="1" step="2" permite 1, 3 y 5, por lo que una entrada de 4 dentro del intervalo falla.

C

Carga diferida
La carga diferida retrasa una solicitud de iframe hasta que el marco está cerca del área de visualización, lo que reduce el trabajo necesario para la vista inicial de la página.
Un mapa situado mucho más abajo de la introducción usa loading="lazy", mientras el contenido principal de la parte superior de la página se carga rápidamente.
Casilla de verificación
Una casilla de verificación es un control independiente que puede estar marcado o sin marcar y cuyo valor solo se envía cuando está marcado.
Un visitante puede marcar tanto «Novedades por correo electrónico» como «Recordatorios de eventos» porque las opciones son independientes.
Celda de datos
Una celda de datos es un elemento td que contiene un valor de tabla cuyo significado procede de los encabezados asociados a su fila y columna.
En una tabla con una fila «Miércoles» y una columna «Distancia (km)», el valor 7,5 se lee como la distancia del miércoles en kilómetros.
Celda de encabezado
Una celda de encabezado es un elemento th que da nombre a una fila o columna y expresa una relación con las celdas de datos asociadas de la tabla.
El encabezado «Distancia (km)» identifica la cantidad y la unidad compartidas por todas las medidas situadas debajo.
Códec
Un códec codifica o decodifica un flujo multimedia; un navegador necesita compatibilidad con los códecs de vídeo y audio reales dentro de un contenedor.
Un MP4 puede combinar vídeo H.264 con audio AAC y ambos flujos necesitan compatibilidad adecuada para su reproducción.
Contenedor multimedia
Un contenedor multimedia es la estructura de archivo que alberga flujos multimedia e información relacionada y que suele identificarse mediante extensiones como .mp4 o .webm.
Dos archivos MP4 pueden contener flujos codificados diferentes, por lo que la extensión por sí sola no garantiza la reproducción.
Contenido alternativo
El contenido alternativo dentro de un elemento multimedia se muestra en navegadores que no admiten ese elemento; no es un mensaje general para todos los fallos de reproducción.
Un enlace de descarga fuera del reproductor sigue disponible incluso cuando un navegador moderno no puede reproducir sus fuentes.
Contenido alternativo del elemento object
El contenido alternativo del elemento object es contenido anidado dentro de un elemento object que proporciona una alternativa cuando no se puede mostrar el recurso externo.
Un elemento object que inserta un PDF puede contener un enlace de descarga para que los lectores aún puedan obtener el documento.
Contenido mixto
El contenido mixto combina una página HTTPS con recursos solicitados mediante HTTP; un iframe HTTP se bloquea porque es contenido activo inseguro.
Una página HTTPS de un lugar que inserta un mapa debe usar la dirección de inserción HTTPS del mapa para evitar un marco inseguro bloqueado.
Control de selección
Un control de selección es un control select que ofrece un conjunto fijo de opciones y envía el valor de la opción o las opciones seleccionadas.
Un menú de entrega muestra «Exprés (día siguiente)» mientras envía el valor de opción más corto express.
Control deslizante
Un control deslizante permite elegir un ajuste numérico dentro de unos límites y se ajusta a los incrementos definidos por su step.
Un control deslizante de volumen puede usar min="0" max="10" cuando un ajuste aproximado resulta más útil que escribir un valor exacto.
Controles de reproducción nativos
Los controles de reproducción nativos son la interfaz de reproducción propia del navegador, activada mediante controls para que los visitantes puedan iniciar, pausar, desplazarse por el contenido multimedia y ajustar su volumen.
Un elemento de audio se convierte en un reproductor visible y utilizable cuando la página añade el atributo controls.
Cuantificador
Un cuantificador especifica cuántas veces puede repetirse el elemento anterior de un patrón, por ejemplo, exactamente cuatro veces o entre dos y cinco veces.
En [0-9]{4}, el cuantificador exige cuatro dígitos, por lo que tres dígitos no completan el código esperado.

D

Datos de formulario multiparte
Los datos de formulario multiparte son una codificación de formulario que transporta partes separadas, incluido el contenido de archivos, en un envío POST.
Un formulario de carga establece enctype="multipart/form-data" para que se puedan enviar los bytes del documento seleccionado.
Desajuste del incremento
Un desajuste del incremento ocurre cuando un valor introducido no está a un número entero de incrementos permitidos de la base aplicable.
Una masa de 2,25 kg falla un incremento de medio kilogramo que empieza en 0,5 incluso cuando está dentro del intervalo permitido del campo.
Documento del marco en línea
Un documento del marco en línea proporcionado con srcdoc es HTML escrito directamente en el atributo del iframe y tiene prioridad sobre una URL src.
Una vista previa de mensaje en un entorno aislado usa srcdoc="<p>Preview of your message</p>" sin obtener una página HTML independiente.

E

Elemento source
Un elemento source ofrece un archivo multimedia alternativo dentro de un reproductor y permite que el navegador seleccione, en orden, la primera fuente que puede reproducir.
Un vídeo enumera una fuente WebM antes que MP4 para que se prefiera WebM cuando el navegador pueda reproducirla.
Entorno aislado
Un entorno aislado aplica restricciones al documento de un iframe, con identificadores específicos que restablecen determinadas capacidades, como ejecutar scripts o enviar formularios.
Un cuestionario enmarcado permite scripts y formularios mientras conserva la restricción del entorno aislado que bloquea las ventanas emergentes.
Estado de validación
Un estado de validación describe si un control cumple actualmente sus restricciones, algo que CSS puede reflejar con selectores de válido o no válido.
El selector :user-invalid puede retrasar los estilos de error hasta que el usuario haya interactuado con el control.
Etiqueta
Una etiqueta es texto conectado a un control de formulario que proporciona su nombre accesible y convierte el texto en un área donde hacer clic para activar ese control.
Hacer clic en «Dirección de correo electrónico» da el foco al campo cuyo id coincide con el atributo for de la etiqueta.
Expresión regular
Una expresión regular es una notación compacta que describe patrones de texto mediante grupos de caracteres, reglas de repetición y otros operadores.
La expresión [A-Z]{3} acepta exactamente tres letras mayúsculas latinas básicas cuando se usa como patrón para el valor completo.
Extensión de una celda sobre varias columnas
La extensión de una celda sobre varias columnas hace que una celda de tabla ocupe varias posiciones horizontales de la cuadrícula mediante su atributo colspan, sustituyendo celdas vecinas.
En un horario con dos columnas de días, una entrada de pausa para comer con colspan="2" ocupa ambas junto al encabezado de hora independiente de la fila.
Extensión de una celda sobre varias filas
La extensión de una celda sobre varias filas hace que una celda de tabla ocupe su columna a lo largo de varias filas, por lo que las posiciones cubiertas en filas posteriores no necesitan una celda nueva.
Una sesión del lunes con rowspan="2" deja ya ocupada la posición del lunes en la fila siguiente.

F

Fecha y hora locales
Una fecha y hora locales combinan una fecha de calendario con una hora, sin zona horaria, como las recogidas por datetime-local.
Una entrada para una cita puede enviar 2026-07-09T10:30; la ubicación debe aportar el contexto de zona horaria que sea necesario.
Formulario
Un formulario es un grupo de controles que recoge datos de entrada relacionados y envía los datos resultantes a una URL de destino como una solicitud.
Un formulario de contacto envía juntos el mensaje y la dirección de correo electrónico de un visitante cuando este pulsa «Enviar».

G

GET
GET es un método de solicitud que coloca los datos enviados por un formulario en la cadena de consulta de la URL y es adecuado para leer o buscar información.
Una búsqueda en un catálogo puede mantener sus términos de búsqueda en la URL para que la dirección de los resultados se pueda guardar en marcadores.
Grupo de botones de opción
Un grupo de botones de opción es un conjunto de campos de opción que comparten un nombre, de modo que elegir una opción desmarca cualquier selección anterior del grupo.
Tres velocidades de entrega usan el mismo name="speed" y valores distintos para permitir una sola selección.
Grupo de campos
Un grupo de campos reúne controles de formulario relacionados y permite que una leyenda compartida dé nombre al grupo mientras los controles individuales conservan sus etiquetas.
Un fieldset coloca juntos tres botones de opción de entrega bajo la pregunta compartida «Velocidad de entrega».
Grupo de columnas
Un grupo de columnas describe columnas de tabla relacionadas mediante colgroup y proporciona estructura para encabezados de grupo y determinados estilos de columna.
Las columnas «Prevista» y «Real» comparten un grupo de columnas definido bajo el encabezado «Distancia (km)».
Grupo de filas
Un grupo de filas reúne filas de tabla según su función mediante thead, tbody o tfoot, separando encabezados, datos principales y resúmenes.
En un registro de carreras, la distancia total y el tiempo total aparecen en una fila final dentro de tfoot, después de las filas del cuerpo.
Grupo de opciones
Un grupo de opciones es un elemento optgroup que coloca opciones relacionadas de un select bajo un encabezado con nombre que no puede seleccionarse.
El encabezado «Bebidas calientes» agrupa el té y el café sin convertirse en una bebida que se pueda pedir en el menú.

I

Imagen de portada del vídeo
Una imagen de portada del vídeo es una imagen fija independiente que muestra un elemento de vídeo antes de la reproducción y que se selecciona mediante su atributo poster.
Un vídeo de un taller muestra su imagen fija introductoria mientras espera a que el visitante pulse reproducir.
Incremento
Un incremento es un paso permitido desde la base del incremento de un campo que restringe qué valores dentro de sus límites pasan la validación.
Un campo de hora con step="900" usa incrementos de 15 minutos porque los incrementos de hora se miden en segundos.
Indicador de medida
Un indicador de medida muestra una medida dentro de un intervalo conocido, como el almacenamiento utilizado, en lugar de mostrar cuánto se ha completado de una tarea en curso.
Un indicador de medida con value="0.6" y su intervalo predeterminado muestra una medida en el 60 % de ese intervalo.
Indicador de progreso
Un indicador de progreso muestra cuánto se ha completado de una tarea mediante un elemento progress, su valor actual y su máximo.
Una tarea que va por 70 de 100 puede mostrar una barra de progreso mientras el texto cercano da nombre a la tarea.

L

Leyenda del grupo de campos
Una leyenda del grupo de campos es el primer elemento hijo de un fieldset que da nombre al grupo y proporciona una pregunta o contexto compartido a sus controles relacionados.
La leyenda «Preferencias de contacto» explica por qué varias casillas de comunicación etiquetadas individualmente aparecen juntas.
Lista de sugerencias
Una lista de sugerencias proporciona valores sugeridos a un campo vinculado, pero deja al usuario la libertad de escribir una respuesta fuera de esas sugerencias.
Un campo de ciudad sugiere «Osaka» y «Nairobi», pero sigue aceptando otra ciudad introducida por el visitante.
Longitud máxima
Una longitud máxima es el límite superior de entrada de texto establecido por maxlength; los navegadores normalmente dejan de aceptar la escritura habitual cuando se alcanza ese límite.
Un campo de nombre de usuario con maxlength="12" deja de aceptar un decimotercer carácter latino normal durante la escritura.
Longitud mínima
Una longitud mínima es un límite inferior para el texto introducido establecido por minlength, que sigue permitiendo un campo vacío salvo que también se aplique required.
Un apodo opcional con minlength="4" puede omitirse, pero un apodo proporcionado de dos letras falla.

M

Marco en línea
Un marco en línea es un elemento iframe que muestra un documento web independiente dentro de la página actual, con sus propios estilos y scripts.
Una página de un lugar inserta la página de un servicio de mapas y mantiene el mapa dentro de un área rectangular definida.
Máximo
Un máximo es un límite superior inclusivo establecido por max que un valor numérico o de fecha y hora no debe superar para pasar la validación.
Un campo de fecha con max="2026-08-31" permite el 31 de agosto, pero rechaza una fecha posterior introducida.
Mínimo
Un mínimo es un límite inferior inclusivo establecido por min para un campo numérico o de fecha y hora, que también proporciona la base del incremento cuando es válido.
Con min="0.5" step="0.5", un paquete puede pesar 0,5 kg y los incrementos posteriores comienzan desde ese valor.
Modo de entrada
Un modo de entrada es una indicación para la disposición de un teclado en pantalla; no valida el texto ni limita los caracteres que puede introducir un usuario.
Un campo de texto para un código de socio usa inputmode="numeric" para facilitar la entrada de dígitos en un teléfono.

N

Nombre accesible
Un nombre accesible identifica un control o marco ante la tecnología de apoyo para que su finalidad pueda anunciarse cuando un usuario llegue a él.
La etiqueta «Número de teléfono (opcional)» indica a quien usa un lector de pantalla tanto el dato solicitado como su carácter opcional.

O

Omisión de la validación
La omisión de la validación evita las comprobaciones normales de envío del navegador mediante ajustes como novalidate o una solicitud enviada fuera del formulario.
Un botón de envío «Guardar borrador» puede usar formnovalidate mientras el botón normal «Enviar» mantiene las comprobaciones.
Origen
Un origen es la combinación del esquema, el anfitrión y el puerto de una dirección web, que las reglas del navegador usan para distinguir los límites de acceso entre documentos.
Una página insertada del mismo anfitrión HTTPS y puerto puede compartir origen con el documento que la rodea.

P

Par nombre/valor
Un par nombre/valor vincula una clave de datos enviada desde el atributo name de un control con el valor que aporta ese control.
Una opción seleccionada puede producir delivery=express, aunque su etiqueta visible sea «Entrega exprés».
Patrón
Un patrón es un atributo de entrada que contiene una expresión regular con la que debe coincidir todo el valor no vacío para superar la comprobación de formato.
Una organización puede exigir un código de producto como «ABC-1234» mediante su propio patrón fijo de letras y dígitos.
Permiso de acceso a una función
Un permiso de acceso a una función concede a un documento insertado acceso a una capacidad del navegador mediante allow, sujeto a otras políticas del navegador y a las elecciones del usuario.
Un reproductor recibe permiso de pantalla completa sin recibir un permiso innecesario para usar la cámara del visitante.
Pista de texto
Una pista de texto es información temporizada adjunta a contenido multimedia mediante track, con un tipo como captions, subtitles, chapters o metadata.
Una pista de subtítulos proporciona su idioma y una etiqueta de menú para que los espectadores puedan identificar y activar el texto.
Política de referencia
Una política de referencia controla qué parte de la dirección de la página de referencia se envía con una solicitud; no-referrer omite esa dirección por completo.
Un marco con referrerpolicy="no-referrer" sigue contactando con su proveedor, pero no envía la dirección de la página de referencia.
POST
POST es un método de solicitud que coloca los datos enviados por un formulario en el cuerpo de la solicitud y es adecuado para enviar mensajes o cambiar datos.
Un formulario de registro usa POST, con HTTPS protegiendo la conexión que transporta los datos personales.
Precarga
La precarga es una indicación sobre la obtención de contenido multimedia antes de la reproducción, que solicita no descargar nada, obtener metadatos básicos o, posiblemente, el archivo completo.
Un clip largo usa preload="none" para evitar solicitar su contenido multimedia por adelantado cuando muchos visitantes pueden no verlo.

R

Relación de aspecto
Una relación de aspecto es la relación entre el ancho y la altura de una imagen o un vídeo, que se usa para conservar su forma cuando cambia su tamaño.
Un clip de 1920 × 1080 tiene una proporción de 16:9, por lo que un reproductor con la misma proporción y 640 píxeles de ancho tiene 360 píxeles de alto.
Reproducción automática
La reproducción automática solicita iniciar la reproducción sin pulsar un botón, pero los navegadores pueden bloquearla según los ajustes de sonido, interacción y permisos.
Un clip de fondo silenciado y en línea tiene más posibilidades de reproducirse automáticamente que uno que empieza con sonido.
Restricción de inclusión en marcos
Una restricción de inclusión en marcos es una regla de respuesta de un proveedor que indica a los navegadores dónde puede aparecer su página dentro de otras páginas o si puede hacerlo.
Un marco bloqueado necesita una dirección de inserción aprobada o un enlace directo; cambiar su título no puede anular la regla.

S

Secuestro de clics
El secuestro de clics engaña a un usuario para que haga clic en una interfaz enmarcada oculta o engañosa; las restricciones de inclusión en marcos ayudan a los sitios a prevenirlo.
Un sitio puede rechazar su inclusión en marcos para que sus botones no puedan ocultarse bajo una interfaz engañosa en otra página.
Señal de texto temporizada
Una señal de texto temporizada es una entrada de texto con una hora de inicio, una hora de finalización posterior y texto que se muestra durante ese intervalo en una pista WebVTT.
El intervalo 00:00:01.000 --> 00:00:04.500 muestra una señal durante tres segundos y medio.
Subtítulos
Los subtítulos transcriben o traducen el diálogo para ayudar a los espectadores a comprender el idioma hablado cuando pueden oír el audio.
Un espectador que oye el diálogo original puede usar subtítulos traducidos para seguir su significado.
Subtítulos para personas sordas
Los subtítulos para personas sordas representan las palabras, la identidad de los hablantes y los sonidos relevantes como texto temporizado para quienes no pueden oír el audio de una grabación.
Un subtítulo incluye «[se cierra la puerta]» para que la información del sonido siga disponible con el reproductor silenciado.

T

Tabla de datos
Una tabla de datos organiza valores relacionados en filas y columnas para que cada valor adquiera significado a partir de ambas dimensiones de la cuadrícula.
Un registro de carrera compara distancias y tiempos de varios días mediante una fila por día y columnas etiquetadas.
Texto de ayuda asociado mediante aria-describedby
Un texto de ayuda asociado mediante aria-describedby es un texto explicativo vinculado a un control mediante aria-describedby que añade una descripción junto a su etiqueta.
Un texto de ayuda para una contraseña con su propio id explica «Usa al menos 8 caracteres» antes de enviar el formulario.
Tipo de entrada
Un tipo de entrada es el ajuste que elige el comportamiento de entrada de un control, como un campo de correo electrónico, un selector de fecha o una casilla de verificación.
Para una fecha de llegada, type="date" proporciona un selector en lugar de un cuadro de texto de una línea sin restricciones.
Tipo MIME
Un tipo MIME identifica el formato de un recurso para que un navegador pueda decidir si lo admite antes de obtener datos multimedia.
Una fuente MP3 declara type="audio/mpeg", lo que permite al navegador reconocer su formato de audio previsto.
Título de la tabla
Un título de la tabla es el título propio de una tabla, colocado primero dentro de ella para que los lectores puedan identificar su tema antes de leer las celdas individuales.
El título «Registro de carrera, semana 12» distingue las medidas de esa semana de otra tabla de la página.
Transcripción
Una transcripción es una versión textual legible de las palabras y los sonidos relevantes, proporcionada en la página o mediante un enlace cercano con un nombre claro.
Una página de pódcast coloca «Lee la transcripción del episodio» justo debajo de su reproductor de audio para facilitar el acceso.

V

Validación de restricciones
La validación de restricciones es la comprobación que hace el navegador de los valores de un formulario frente a los tipos de entrada y atributos antes de un envío normal.
Al enviar un formulario con un campo de correo electrónico obligatorio vacío, el navegador pone el foco en ese campo y muestra un mensaje.
Validación en el servidor
La validación en el servidor comprueba los datos recibidos en el programa del servidor porque los controles y comprobaciones de un navegador se pueden cambiar o eludir.
Un servidor rechaza un código de producto mal formado aunque alguien haya eliminado el patrón del campo en las herramientas de desarrollo.

W

WebVTT
WebVTT es un formato de pista de texto UTF-8 que comienza con WEBVTT y contiene señales temporizadas separadas por líneas en blanco; normalmente se guarda como .vtt.
Una pista de subtítulos apunta a intro.en.vtt, cuyas marcas de tiempo usan puntos antes de los dígitos de milisegundos.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar