# Fondos

En esta lección se explican las propiedades que se pueden aplicar a los fondos de cualquier elemento de una página web:

## La propiedad compuesta background

La propiedad compuesta background permite definir simultáneamente todas las propiedades relacionadas con el fondo de cualquier elemento: background-color, background-image, background-position, background-repeat y background-attachment (explicadas más adelante en esta página).

Volver al índice

## Color de fondo: background-color

La propiedad background-color establece el color de fondo de cualquier elemento con la propiedad .

| td { background-color: lightblue; } | El fondo de esta celda es lightblue.

Volver al índice

## Imagen de fondo: background-image

La propiedad background-image establece cualquier imagen como fondo de un elemento con la propiedad . La sintaxis es la siguiente background-image: url("nombre_de_la_imagen"), en la que el nombre_de_la_imagen debe indicar el nombre (y la extensión) de la imagen, así como el camino relativo desde la hoja de estilo. En el ejemplo siguiente, la imagen se encuentra en la carpeta img/fondos y se llama verde.jpg. Las comillas que rodean el nombre_de_la_imagen sólo son necesarias si hay espacios en blanco en el nombre_de_la_imagen. Se pueden utilizar comillas simples (') o doble (").

| td { background-image: url("verde.jpg"); } | El fondo de esta celda es una imagen. Por omisión, los navegadores repiten la imagen en horizontal y vertical hasta ocupar todo el elemento que contiene la imagen de fondo. En el ejemplo siguiente se ve mejor el resultado.
| td { background-image: url("verde.jpg"); } |

Si en un elemento tiene tanto color de fondo como imagen de fondo, la imagen se sitúa por encima del color. En los ejemplos siguientes, la imagen se sitúa en ambos casos por encima del color, pero en el segundo caso la imagen contiene un color transparente, por lo que sí que se ve el color de fondo.

| td { background-color: lightblue; background-image: url("verde.jpg"); } | Esta celda tiene color de fondo lightblue y una imagen sin transparencia, por lo que el color de fondo no es visible.
| td { background-color: lightblue; background-image: url("gota.png"); } | Esta celda tiene color de fondo lightblue y una imagen con transparencia, por lo que el color de fondo sí que es visible.
| td { background-color: lightyellow; background-image: url("gota.png"); } | Esta celda tiene color de fondo lightyellow y la misma imagen con transparencia del ejemplo anterior, por lo que el color de fondo sí que es visible.

Volver al índice

## Repetición de la imagen de fondo: background-repeat

Por omisión, los navegadores repiten la imagen de fondo tanto en vertical como en horizontal. La propiedad background-repeat permite controlar esa repetición. Los valores posibles son no-repeat (para que la imagen no se repita), repeat-x (para que la imagen se repita únicamente en horizontal), repeat-y (para que la imagen se repita únicamente en vertical) y repeat (para que se repita en horizontal y vertical).

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; } |
| td { background-image: url("verde.jpg"); background-repeat: repeat-x; } |
| td { background-image: url("verde.jpg"); background-repeat: repeat-y; } |
| td { background-image: url("verde.jpg"); background-repeat: repeat; } |

Volver al índice

## Posición de la imagen de fondo: background-position

La propiedad background-position permite establecer la posición de la imagen de fondo. A esta propiedad hay que darle dos valores: la posición horizontal y la posición vertical. Se puede definir la posición con valores numéricos (porcentajes o distancias) o con palabras. Los términos para establecer la posición horizontal son left, center y right; los términos para establecer la posición vertical son top, center, bottom.

Si se emplean únicamente términos, el orden no es importante:

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: right bottom;} |
| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: bottom right;} |

Si se emplea un único término, se supone que el otro es center.

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: bottom;} |

Si se emplean únicamente valores numéricos, el primer valor hace referencia a la posición horizontal y el segundo a la posición vertical.

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: 50% 100%; } |
| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: 100% 50%; } |

Si se emplea un único valor numérico, se supone que hace referencia a la posición horizontal y valor ausente es 50%.

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: 100%;} |

La recomendación CSS 2 del W3C dice que no se deben mezclar números y palabras, pero los borradores de la futura recomendación CSS 2.1 sí que permiten mezclar números y palabras, aunque obligan a que el primer término se refiera a la posición horizontal y el segundo a la vertical. Firefox sigue la recomendación CSS 2.1, pero Internet Explorer permite que se haga en cualquier orden, por lo que la posición del fondo será una fuente de problemas si los diseñadores de páginas web no conocen la recomendación y sólo prueban sus páginas en Internet Explorer.

En el ejemplo siguiente tanto Firefox como Internet Explorer muestran la imagen correctamente, abajo a la derecha.

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: 100% bottom; } |

En el ejemplo siguiente Firefox, muestra la imagen de fondo arriba a la izquierda porque no hace caso de la propiedad background-position. Sin embargo Internet Explorer muestra la imagen de fondo abajo a la derecha, lo que es incorrecto puesto que la propiedad background-position del ejemplo no es válida.

| td { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: bottom 100%; } /* bottom 100% es incorrecto, lo correcto sería decir 100% bottom (primero la posición horizontal y luego la vertical) */ |

Volver al índice

## Atadura de la imagen de fondo: background-attachment

La propiedad background-attachment establece el comportamiento de la imagen de fondo cuando se desplaza el elemento (al utilizar las barras de desplazamiento del navegador). Los valores posibles son scroll (la imagen acompaña al elemento) o fixed (la imagen permanece fija).

Firefox e Internet Explorer aplican correctamente esta propiedad en <body> o <html>, pero no siempre en otras etiquetas. Por ejemplo, Firefox 1.0 no muestra la imagen de fondo en el ejemplo siguiente, en el que una división tiene imagen de fondo. Internet Explorer muestra la imagen, pero no la mantiene fija. No he visto en bugzilla ningún bug relacionado.

div { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: right top; background-attachment: scroll;} | Este cuadro tiene una imagen como fondo. Si el texto no cabe en el cuadro, el navegador muestra unas barras de desplazamiento (en este caso, verticales). Si no ves las barras de desplazamiento, aumenta el tamaño de la fuente o reduce el tamaño de la ventana hasta que aparezcan las barras de desplamiento. A continuación, desplaza el texto arriba y abajo y verás cómo la imagen se desplaza junto con el texto. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido.
div { background-image: url("verde.jpg"); background-repeat: no-repeat; background-position: right top; background-attachment: fixed;} | Este cuadro tiene una imagen como fondo. Si el texto no cabe en el cuadro, el navegador muestra unas barras de desplazamiento (en este caso, verticales). Si no ves las barras de desplazamiento, aumenta el tamaño de la fuente o reduce el tamaño de la ventana hasta que aparezcan las barras de desplamiento. A continuación, desplaza el texto arriba y abajo y verás cómo la imagen se desplaza junto con el texto. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido. Este párrafo es para hacer más largo el contenido.

Volver al índice