Propiedad CSS background-attachment
La propiedad CSS background-attachment define si la imagen de fondo se desplaza con la página, permanece fija o se mueve con el contenido.
La propiedad background-attachment define si una imagen de fondo permanece fija en su lugar o se desplaza junto con el resto de la página. Controla cómo se comporta la imagen mientras el usuario hace scroll — un detalle pequeño que es el ingrediente clave detrás de efectos como los banners fijos y el parallax con solo CSS.
Esta página explica cada valor, cuándo usar cada uno y el único problema (en móvil) que suele causar confusión.
Valores
background-attachment acepta cinco valores:
scroll(predeterminado) — el fondo está fijado al elemento, por lo que no se mueve cuando el contenido del elemento hace scroll, pero sí se mueve cuando la página hace scroll. En la práctica se comporta como "se desplaza con la página."fixed— el fondo está fijado al viewport. Permanece estático mientras todo lo demás se desplaza, por lo que el contenido parece deslizarse sobre una imagen estacionaria. Esto es lo que crea el efecto clásico de parallax / banner hero.local— el fondo está fijado al contenido del elemento. Cuando haces scroll dentro de un elemento desplazable (overflow: auto), el fondo se mueve junto con ese contenido.initial— restablece la propiedad a su valor predeterminado (scroll).inherit— toma el valor del elemento padre.
La diferencia entre
scrollylocalsolo se aprecia en un elemento que tiene su propia barra de desplazamiento. En una página con scroll normal, se ven igual.
En JavaScript el nombre de la propiedad DOM está en camelCase: element.style.backgroundAttachment.
| Valor inicial | scroll |
|---|---|
| Se aplica a | Todos los elementos. También se aplica a ::first-letter y ::first-line. |
| Heredado | No. |
| Animable | No. |
| Versión | CSS1 |
| Sintaxis DOM | object.style.backgroundAttachment = "scroll"; |
Sintaxis
Sintaxis de la propiedad CSS background-attachment
background-attachment: scroll | fixed | local | initial | inherit;Ejemplo de la propiedad background-attachment con el valor "scroll":
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
body {
background-image: url("https://api.w3docs.com/uploads/media/default/0001/01/0710cad7a1017902166203def268a0df2a5fd545.png");
background-repeat: no-repeat;
background-attachment: scroll;
background-size: 400px 100px;
}
.scroll-container {
height: 300px;
overflow: auto;
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<h2>background-attachment example</h2>
<div class="scroll-container">
<p>The background-image scrolls with the viewport. Try to scroll down.</p>
<p>More content to demonstrate scrolling...</p>
<p>Keep scrolling...</p>
<p>Almost there...</p>
<p>End of content.</p>
</div>
<p>If you do not see any scrollbars, try to resize the browser window.</p>
</body>
</html>En el siguiente ejemplo, la imagen de fondo está "fija" y no se mueve con la página.
Ejemplo de la propiedad background-attachment con el valor "fixed":
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
body {
background-image: url("https://api.w3docs.com/uploads/media/default/0001/01/0710cad7a1017902166203def268a0df2a5fd545.png");
background-repeat: no-repeat;
background-attachment: fixed;
background-size: 400px 100px;
}
.scroll-container {
height: 300px;
overflow: auto;
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<h2>background-attachment example</h2>
<div class="scroll-container">
<p>The background-image is fixed. Try to scroll down the page.</p>
<p>More content to demonstrate scrolling...</p>
<p>Keep scrolling...</p>
<p>Almost there...</p>
<p>End of content.</p>
</div>
<p>If you do not see any scrollbars, try to resize the browser window.</p>
</body>
</html>Ejemplo de la propiedad background-attachment con el valor "local":
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
.local-container {
height: 300px;
overflow: auto;
border: 1px solid #ccc;
padding: 10px;
background-image: url("https://api.w3docs.com/uploads/media/default/0001/01/0710cad7a1017902166203def268a0df2a5fd545.png");
background-repeat: no-repeat;
background-attachment: local;
background-size: 400px 100px;
}
</style>
</head>
<body>
<h2>background-attachment example</h2>
<div class="local-container">
<p>The background-image scrolls with the element's contents, not the viewport. Try to scroll down.</p>
<p>More content to demonstrate scrolling...</p>
<p>Keep scrolling...</p>
<p>Almost there...</p>
<p>End of content.</p>
</div>
<p>If you do not see any scrollbars, try to resize the browser window.</p>
</body>
</html>Ejemplo de la propiedad background-attachment con una imagen de fondo fija y background-size: cover:
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
.example {
background-image: url("/uploads/media/default/0001/01/4982c4f43023330a662b9baed5a407e391ae6161.jpeg");
min-height: 500px;
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
</style>
</head>
<body>
<h2>background-attachment example</h2>
<p>Scroll the page to see the effect.</p>
<div class="example"></div>
<div style="height:800px;background-color:#1c87c9;"></div>
</body>
</html>Cuándo usar cada valor
- Usa
fixedcuando quieras una imagen hero o un fondo de página completa que permanezca estático mientras el contenido se desplaza sobre él — la forma más sencilla de obtener un efecto tipo parallax sin JavaScript. - Usa
localcuando un contenedor con scroll (un panel de chat, un listado de código, una tarjeta conoverflow: auto) deba mantener su fondo pegado al contenido que se desplaza en lugar de al propio contenedor. - Deja el valor en
scrollpara los fondos de página ordinarios que deben moverse de forma natural con la página.
Problema: fixed en móvil
background-attachment: fixed tiene soporte limitado en navegadores móviles — especialmente en iOS Safari, donde o bien renderiza la imagen estirada o deshabilita el comportamiento fijo por completo por razones de rendimiento. Si necesitas un efecto parallax fiable en móvil, usa un elemento con posición fija separado en lugar de depender de esta propiedad. Siempre prueba los fondos fijos en un dispositivo táctil real.
Dado que la propiedad puede obligar al navegador a repintar el fondo en cada fotograma de scroll, el uso excesivo de fixed con imágenes grandes también puede perjudicar el rendimiento del scroll.
Propiedades relacionadas
background-attachment se suele establecer junto con otras propiedades de fondo:
- background-image — la imagen que se adjunta.
- background-position — dónde se sitúa la imagen.
- background-repeat — si se repite en mosaico.
- background-size —
coverycontaincombinan bien confixed. - background — la propiedad abreviada que puede establecer todas a la vez.