W3docs

Etiqueta HTML <marquee>

La obsoleta etiqueta marquee de HTML desplazaba texto o imágenes por la página. Aprende por qué fue eliminada y cómo desplazar contenido con animaciones CSS.

El elemento <marquee> es una etiqueta HTML obsoleta y no estándar que se usaba para crear texto o imágenes desplazantes. Hacía que el contenido se desplazara horizontalmente o verticalmente hacia abajo en la página web. Al igual que el elemento <blink> de Netscape, fue ampliamente criticada por sus problemas de usabilidad.

Peligro

No uses <marquee> en código nuevo. Fue eliminada del Estándar de HTML vigente y es oficialmente obsoleta. Los ejemplos de esta página existen únicamente para que puedas reconocer y reemplazar código heredado — no son una recomendación. Para efectos de desplazamiento hoy en día, usa el reemplazo moderno con CSS que se muestra a continuación. Consulta también la lista de etiquetas HTML obsoletas.

Ejemplo de la etiqueta HTML marquee

Esta página explica qué hacía <marquee>, por qué fue eliminada, cómo reproducir su efecto con animaciones CSS conformes a los estándares y las reglas de accesibilidad que debes seguir cuando el contenido se mueve en pantalla.

Por qué se eliminó <marquee>

Aunque la mayoría de los navegadores todavía renderizan <marquee> por compatibilidad con versiones anteriores, debes tratarla como rota:

  • No forma parte de ninguna especificación actual. Los fabricantes de navegadores pueden eliminar su soporte en cualquier momento, y las herramientas, linters y validadores la marcan como un error.
  • Es presentación en el marcado. Las animaciones pertenecen al CSS, no a los elementos HTML.
  • Perjudica la accesibilidad. El contenido en movimiento continuo puede violar las WCAG (ver Accesibilidad más abajo).

Reemplazo moderno con CSS

El efecto marquee es simplemente un elemento que se traslada a través de su contenedor en bucle. Puedes reproducirlo con @keyframes de CSS y la propiedad transform — sin JavaScript y sin etiquetas obsoletas.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .marquee {
        overflow: hidden;       /* hide the text outside the box */
        white-space: nowrap;    /* keep the text on one line */
        box-sizing: border-box;
      }
      .marquee span {
        display: inline-block;
        padding-left: 100%;     /* start fully off-screen on the right */
        animation: scroll-left 12s linear infinite;
      }
      @keyframes scroll-left {
        from { transform: translateX(0); }
        to   { transform: translateX(-100%); }
      }
      /* Pause the animation when the user hovers, giving them control. */
      .marquee:hover span {
        animation-play-state: paused;
      }
    </style>
  </head>
  <body>
    <div class="marquee">
      <span>A scrolling text created with CSS animation instead of marquee.</span>
    </div>
  </body>
</html>

Dado que el movimiento ahora reside en CSS, puedes controlar su velocidad con animation-duration, su dirección intercambiando los valores de translateX, y su suavidad con las propiedades transition y animation — todas ellas estándar y completamente compatibles.

Advertencia de accesibilidad

El contenido en movimiento es una preocupación real de accesibilidad, no una preferencia estética.

  • El Criterio de Éxito 2.2.2 de las WCAG (Pausar, Detener, Ocultar) exige que cualquier contenido que se mueva, parpadee o se desplace automáticamente durante más de cinco segundos pueda ser pausado, detenido u ocultado por el usuario. Un <marquee> sin más no ofrece ningún control de ese tipo, por lo que incumple este criterio.
  • Respeta prefers-reduced-motion. Algunos usuarios han solicitado explícitamente a su sistema que minimice las animaciones (pueden provocar náuseas o vértigo). Desactiva el desplazamiento para ellos:
@media (prefers-reduced-motion: reduce) {
  .marquee span {
    animation: none;
  }
}
  • Proporciona un control de pausa. El ejemplo CSS anterior pausa al pasar el cursor mediante animation-play-state, pero el hover no está disponible para usuarios de teclado o pantalla táctil. Para contenido importante, añade un botón visible de Pausar/Reproducir que alterne animation-play-state para que todos puedan detener el movimiento.

Alternativas a la etiqueta HTML <marquee>

Además del enfoque puramente CSS mencionado anteriormente, puedes crear efectos de desplazamiento más ricos combinando CSS y JavaScript.

Sintaxis heredada (solo como referencia)

Advertencia

Los ejemplos de esta sección son código heredado conservado aquí únicamente para ayudarte a reconocerlo y migrarlo. No añadas <marquee> a páginas nuevas — usa el reemplazo moderno con CSS en su lugar.

La etiqueta <marquee> va en pares. El contenido se escribe entre las etiquetas de apertura (<marquee>) y cierre (</marquee>).

Ejemplo del uso de la etiqueta HTML <marquee>:

Ejemplo de la etiqueta HTML <marquee>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      marquee{
      font-size: 30px;
      font-weight: 800;
      color: #8ebf42;
      font-family: sans-serif;
      }
    </style>
  </head>
  <body>
    <marquee>A scrolling text created with HTML Marquee element.</marquee>
  </body>
</html>

Usa el atributo direction del elemento <marquee> para cambiar la dirección del texto o la imagen. Observa otro ejemplo donde el texto se desplaza de arriba hacia abajo.

Ejemplo de texto desplazante:

Ejemplo de la etiqueta <marquee> con el atributo direction

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <marquee direction="down">A scrolling text created with HTML Marquee element.</marquee>
  </body>
</html>

Veamos ahora un ejemplo de uso del elemento <marquee> para mostrar una imagen desplazante:

Ejemplo de imagen desplazante:

Ejemplo de la etiqueta <marquee> con los atributos behavior y direction

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
     <marquee behavior="scroll" direction="up">
      <img src="https://api.w3docs.com/uploads/media/default/0001/01/0710cad7a1017902166203def268a0df2a5fd545.png" width="190" height="45" alt="W3docs" />
    </marquee>
  </body>
</html>
Consejo

Usa las propiedades CSS width y background-color para dar estilo al elemento <marquee>.

Ejemplo de creación de texto desplazante con la etiqueta HTML <marquee>:

Ejemplo de cómo dar estilo a la etiqueta HTML <marquee> con las propiedades width y background-color

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <style> 
      marquee {
        width: 100%;
        padding: 10px 0;
        background-color: lightblue;
      }
    </style>
    <marquee direction="scroll">This scrolling text is created with HTML Marquee element and styled with CSS properties.</marquee>
  </body>
</html>

Atributos

Los siguientes atributos se usaban para ajustar la apariencia del elemento <marquee>. Todos ellos son no estándar. No están definidos en ninguna especificación actual, y las herramientas conformes a especificación los marcarán como errores; incluso donde los navegadores todavía los aceptan hoy, ese comportamiento no está garantizado.

AtributoValorDescripción
behaviorscroll, slide, alternateDefine el tipo de desplazamiento.
bgcolorrgb(x,x,x), #xxxxxx, colornameEstablece el color de fondo.
directionup, down, left, rightEstablece la dirección del contenido desplazante.
heightpixels, %Define la altura del marquee.
hspacepixelsDefine el espacio horizontal alrededor del marquee.
loopnumberDefine cuántas veces se desplazará el contenido. Si se omite, el contenido se desplaza indefinidamente.
scrollamountnumberDefine la cantidad de desplazamiento en cada intervalo, en píxeles. El valor predeterminado es 6.
scrolldelaymillisecondsDefine el retardo entre cada desplazamiento. El valor predeterminado es 85.
truespeedbooleanHabilita una velocidad de desplazamiento constante en diferentes navegadores.
vspacepixelsDefine el espacio vertical alrededor del marquee.
widthpixels, %Define el ancho del marquee.

La etiqueta <marquee> también admite los atributos globales y los atributos de evento.

Práctica

Práctica
¿Qué características de CSS deberías usar para reproducir el antiguo efecto de desplazamiento del marquee en código moderno?
¿Qué características de CSS deberías usar para reproducir el antiguo efecto de desplazamiento del marquee en código moderno?
Was this page helpful?