Los capítulos anteriores muestran las decenas de etiquetas XHTML disponibles para marcar y estructurar cada elemento individual de las páginas web: tablas, listas, enlaces, párrafos, imágenes, etc. Aunque combinando esas etiquetas es posible crear cualquier página web, no es posible hacer que las páginas muestren estructuras complejas.
La mayoría de páginas HTML disponen de estructuras complejas formadas por varias columnas de contenidos y otro tipo de divisiones. Utilizando exclusivamente HTML no es posible crear estas estructuras complejas, ya que es imprescindible emplear las hojas de estilos CSS.
No obstante, los estilos de CSS necesitan la ayuda de HTML/XHTML para crear los diseños más avanzados. En concreto, el código HTML se encarga de agrupar los elementos de la página en diferentes divisiones en función de su finalidad: la zona de la cabecera de la página, la zona de contenidos, una zona lateral para el menú y otras secciones menores, la zona del pie de página, etc.
Para agrupar los elementos que forman cada zona o división de la página se utiliza la etiqueta <div>
:
El nombre de la etiqueta div
tiene su origen en la palabra división, ya que esta etiqueta define zonas o divisiones dentro de una página HTML. En cualquier caso, casi todos los diseñadores web utilizan la palabra "capa" para referirse a una "división". Aunque se trata de un error grave (las capas se crean mediante una propiedad de CSS llamada z-index
) es preferible seguir llamando "capas" a las zonas definidas con la etiqueta <div>
para poder entenderse con el resto de diseñadores.
Las páginas web complejas que están bien diseñadas utilizan decenas de etiquetas <div>
. Con mucha diferencia, los atributos más utilizados con esta etiqueta son id
(para identificar la capa de forma única) y class
(para aplicar a la capa estilos CSS).
No se va a profundizar en el proceso de diseñar una página web mediante <div>
, ya que no es posible diseñar una página web compleja utilizando elementos <div>
sin utilizar hojas de estilos CSS.
Por último, si observas el código HTML de algunas páginas web complejas, verás que la mayoría utilizan los mismos nombres para identificar sus divisiones. Los nombres más comunes, y sus equivalentes en inglés, se muestran a continuación:
contenedor
(wrapper
) suele encerrar la mayor parte de los contenidos de la página y se emplea para definir las características básicas de la página: su anchura, sus bordes, imágenes laterales, si se centra o no respecto de la ventana del navegador, etc.cabecera
(header
) que incluye todos los elementos invariantes de la parte superior de la página (logotipo, imagen o banner, cuadro de búsqueda superior, etc.)contenido
(content
) engloba el contenido principal del sitio (la zona de noticias, la zona de artículos, la zona de productos, etc. dependiendo del tipo de sitio web)menu
(menu
) se emplea para agrupar todos los elementos del menú lateral de navegación de la páginapie
(footer
) que incluye todos los elementos invariantes de la parte inferior de la página (aviso de copyright, política de privacidad, términos de uso, etc.)lateral
(sidebar
) se emplea para agrupar los elementos de las columnas laterales y secundarias de la página.De esta forma, el esqueleto de una página HTML compleja suele ser similar al siguiente:
... <div id="contenedor"> <div id="cabecera"> ... </div> <div id="contenido"> <div id="menu"> .. </div> ... </div> <div id="pie"> ... </div></div> ...
El equivalente para las páginas en inglés sería el siguiente:
... <div id="wrapper"> <div id="header"> ... </div> <div id="content"> <div id="menu"> .. </div> ... </div> <div id="footer"> ... </div></div>
El modelo de cajas o "box model" es seguramente la característica más importante del lenguaje de hojas de estilos CSS, ya que condiciona el diseño de todas las páginas web. El modelo de cajas es el comportamiento de CSS que hace que todos los elementos de las páginas se representen mediante cajas rectangulares.
Las cajas de una página se crean automáticamente. Cada vez que se inserta una etiqueta HTML, se crea una nueva caja rectangular que encierra los contenidos de ese elemento. La siguiente imagen muestra las tres cajas rectangulares que crean las tres etiquetas HTML que incluye la página:
Las partes que componen cada caja y su orden de visualización desde el punto de vista del usuario son las siguientes:
El relleno y el margen son transparentes, por lo que en el espacio ocupado por el relleno se muestra el color o imagen de fondo (si están definidos) y en el espacio ocupado por el margen se muestra el color o imagen de fondo de su elemento padre (si están definidos). Si ningún elemento padre tiene definido un color o imagen de fondo, se muestra el color o imagen de fondo de la propia página (si están definidos).
Si una caja define tanto un color como una imagen de fondo, la imagen tiene más prioridad y es la que se visualiza. No obstante, si la imagen de fondo no cubre totalmente la caja del elemento o si la imagen tiene zonas transparentes, también se visualiza el color de fondo. Combinando imagenes transparentes y colores de fondo se pueden lograr efectos gráficos muy interesantes.
La propiedad CSS que controla la anchura de la caja de los elementos se denomina width
.
La propiedad width
no admite valores negativos y los valores en porcentaje se calculan a partir de la anchura de su elemento padre. El valor inherit
indica que la anchura del elemento se hereda de su elemento padre. El valor auto
, que es el que se utiliza si no se establece de forma explícita un valor a esta propiedad, indica que el navegador debe calcular automáticamente la anchura del elemento, teniendo en cuenta sus contenidos y el sitio disponible en la página.
El siguiente ejemplo establece el valor de la anchura del elemento <div>
lateral:
#lateral { width: 200px; } <div id="lateral"> ... </div>
CSS define otras dos propiedades relacionadas con la anchura de los elementos: min-width
y max-width
, que se verán más adelante.
La propiedad CSS que controla la altura de los elementos se denomina height
.
Al igual que sucede con width
, la propiedad height
no admite valores negativos. Si se indica un porcentaje, se toma como referencia la altura del elemento padre. Si el elemento padre no tiene una altura definida explícitamente, se asigna el valor auto
a la altura.
El valor inherit
indica que la altura del elemento se hereda de su elemento padre. El valor auto
, que es el que se utiliza si no se establece de forma explícita un valor a esta propiedad, indica que el navegador debe calcular automáticamente la altura del elemento, teniendo en cuenta sus contenidos y el sitio disponible en la página.
El siguiente ejemplo establece el valor de la altura del elemento <div>
de cabecera:
#cabecera { height: 60px; } <div id="cabecera"> ... </div>
CSS define otras dos propiedades relacionadas con la altura de los elementos: min-height
y max-height
, que se verán más adelante.
CSS define cuatro propiedades para controlar cada uno de los márgenes horizontales y verticales de un elemento.
Las unidades más utilizadas para indicar los márgenes de un elemento son los píxeles (cuando se requiere una precisión total), los em
(para hacer diseños que mantengan las proporciones) y los porcentajes (para hacer diseños líquidos o fluidos).
El siguiente ejemplo añade un margen izquierdo al segundo párrafo:
.destacado { margin-left: 2em; } <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam et elit. Vivamus placerat lorem. Maecenas sapien. Integer ut massa. Cras diam ipsum, laoreet non, tincidunt a, viverra sed, tortor.</p> <p class="destacado">Vestibulum lectus diam, luctus vel, venenatis ultrices, cursus vel, tellus. Etiam placerat erat non sem. Nulla molestie odio non nisl tincidunt faucibus.</p> <p>Aliquam euismod sapien eu libero. Ut tempor orci at nulla. Nam in eros egestas massa vehicula nonummy. Morbi posuere, nibh ultricies consectetuer tincidunt, risus turpis laoreet elit, ut tincidunt risus sem et nunc.</p>
Algunos diseñadores web utilizan la etiqueta <blockquote>
para tabular los contenidos de los párrafos. Se trata de un error grave porque HTML no debe utilizarse para controlar el aspecto de los elementos. CSS es el único responsable de establecer el estilo de los elementos, por lo que en vez de utilizar la etiqueta <blockquote>
de HTML, debería utilizarse la propiedad margin-left
de CSS.
Los márgenes verticales (margin-top
y margin-bottom
) sólo se pueden aplicar a los elementos de bloque y las imágenes, mientras que los márgenes laterales (margin-left
y margin-right
) se pueden aplicar a cualquier elemento, tal y como muestra la siguiente imagen:
La imagen anterior muestra el resultado de aplicar los mismos márgenes a varios enlaces (elementos en línea) y varios párrafos (elementos de bloque). En los elementos en línea los márgenes verticales no tienen ningún efecto, por lo que los enlaces no muestran ninguna separación vertical, al contrario de lo que sucede con los párrafos. Sin embargo, los márgenes laterales funcionan sobre cualquier tipo de elemento, por lo que los enlaces se muestran separados entre sí y los párrafos aumentan su separación con los bordes laterales de su elemento contenedor.
Además de las cuatro propiedades que controlan cada uno de los márgenes del elemento, CSS define una propiedad especial que permite establecer los cuatro márgenes de forma simultánea. Estas propiedades especiales se denominan "propiedades shorthand" y CSS define varias propiedades de este tipo, como se verá más adelante.
La propiedad que permite definir de forma simultanea los cuatro márgenes se denomina margin
.
La notación {1, 4}
de la definición anterior significa que la propiedad margin
admite entre uno y cuatro valores, con el siguiente significado:
El ejemplo anterior de márgenes se puede reescribir utilizando la propiedad margin
:
Código CSS original:
div img { margin-top: .5em; margin-bottom: .5em; margin-left: 1em; margin-right: .5em;}
Alternativa directa:
div img { margin: .5em .5em .5m 1em;}
Otra alternativa:
div img { margin: .5em; margin-left: 1em;}
El comportamiento de los márgenes verticales es más complejo de lo que se puede imaginar. Cuando se juntan dos o más márgenes verticales, se fusionan de forma automática y la altura del nuevo margen será igual a la altura del margen más alto de los que se han fusionado.
CSS define cuatro propiedades para controlar cada uno de los espacios de relleno horizontales y verticales de un elemento.
Cada una de estas propiedades establece la separación entre el contenido y los bordes laterales de la caja del elemento:
Como sucede con los márgenes, CSS también define una propiedad de tipo "shorthand" llamadapadding
para establecer los cuatro rellenos de un elemento de forma simultánea.
La notación {1, 4}
de la definición anterior significa que la propiedad padding
admite entre uno y cuatro valores, con el mismo significado que el de la propiedad margin
. Ejemplo:
body {padding: 2em} /* Todos los rellenos valen 2em */ body {padding: 1em 2em} /* Superior e inferior = 1em, Izquierdo y derecho = 2em */ body {padding: 1em 2em 3em} /* Superior = 1em, derecho = 2em, inferior = 3em, izquierdo = 2em */ body {padding: 1em 2em 3em 4em} /* Superior = 1em, derecho = 2em, inferior = 3em, izquierdo = 4em */
thin
(borde delgado), medium
(borde normal) y thick
(borde ancho).medium
equivale a 4px
en algunas versiones de Internet Explorer y a 3px
en el resto de navegadores.border-width
:border-width
permite indicar entre uno y cuatro valores. El significado de cada caso es el habitual de las propiedades "shorthand":border-color
para establecer de forma simultánea el color de todos los bordes de una caja:border-width
, es posible indicar de uno a cuatro valores y las reglas de aplicación son idénticas a las de la propiedad border-width
.none
, los elementos no muestran ningún borde visible a menos que se establezca explícitamente un estilo de borde.solid
y dashed
, seguidos de double
y dotted
. Los estilos none
yhidden
son idénticos visualmente, pero se diferencian en la forma que los navegadores resuelven los conflictos entre los bordes de las celdas adyacentes en las tablas.border-style
:<medida_borde>
: una medida CSS o alguna de las siguientes palabras clave: thin
, medium
,thick
.<color_borde>
: un color de CSS o la palabra clave transparent
<estilo_borde>
: una de las siguientes palabras clave: none
, hidden
, dotted
, dashed
, solid
,double
, groove
, ridge
, inset
, outset
.medium
). Este otro ejemplo muestra la forma habitual utilizada para establecer el estilo de cada borde:border-style
es none
, si una propiedad shorthand no establece explícitamente el estilo de un borde, el elemento no muestra ese borde:border
para establecer de forma directa los atributos comunes de todos los bordes y posteriormente especificar para cada uno de los cuatro bordes sus propiedades particulares:La anchura y altura de un elemento no solamente se calculan teniendo en cuenta sus propiedadeswidth
y height
. El margen, el relleno y los bordes establecidos a un elemento determinan la anchura y altura final del elemento. En el siguiente ejemplo se muestran los estilos CSS de un elemento:
div { width: 300px; padding-left: 50px; padding-right: 50px; margin-left: 30px; margin-right: 30px; border: 10px solid black;}
De esta forma, la anchura del elemento en pantalla sería igual a la suma de la anchura original, los márgenes, los bordes y los rellenos:
30px + 10px + 50px + 300px + 50px + 10px + 30px = 480 píxel
Así, la anchura/altura establecida con CSS siempre hace referencia a la anchura/altura del contenido. La anchura/altura total del elemento debe tener en cuenta además los valores del resto de partes que componen la caja del box model.
Por otra parte, la guerra de navegadores que se produjo en los años 90 provocó que cada fabricante (Microsoft y Netscape) añadiera sus propias extensiones y mejoras en sus productos. Posteriormente, aparecieron los estándares publicados por el W3C y los fabricantes se encontraron con el problema de la incompatibilidad entre sus implementaciones anteriores de HTML y CSS y las implementaciones que requerían los estándares.
La solución que adoptaron fue la de incluir en el navegador dos modos diferentes de funcionamiento: modo compatible con las páginas antiguas (denominado "modo quirks" y que se podría traducir como"modo raro") y modo compatible con los nuevos estándares (denominado "modo estándar"). El modoquirks es equivalente a la forma en la que se visualizaban las páginas en los navegadores Internet Explorer 4 y Netscape Navigator 4.
La diferencia más notable entre los dos modos es el tratamiento del "box model", lo que puede afectar gravemente al diseño de las páginas HTML. Los navegadores seleccionan automáticamente el modo en el que muestran las páginas en función del DOCTYPE
definido por el documento. En general, los siguientes tipos de DOCTYPE
activan el modo quirks en los navegadores:
DOCTYPE
DOCTYPE
anterior a HTML 4.0 (<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
)DOCTYPE
de HTML 4.01 sin URL (<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
)En el caso concreto de Internet Explorer, también activan el modo quirks los modos XHTML 1.0 que incluyen la declaración de XML (por ejemplo <?xml version="1.0" encoding="UTF-8"?>
) al principio de la página web:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Se pueden consultar todos los casos concretos que activan el modo quirks para cada navegador en la página http://hsivonen.iki.fi/doctype/
La versión 5.5 y anteriores de Internet Explorer y las versiones 6 y 7 en modo quirks siguen su propio modelo de cálculo de anchuras y alturas que es muy diferente al método definido por el estándar.
La anchura del elemento es la que se obtiene de sumar la anchura de su contenido (300
), sus bordes (2 x 10
) y sus rellenos (2 x 50
). Por lo tanto, la anchura del elemento son 420
píxel, a los que se suman los 30
píxel de margen lateral a cada lado.
Las versiones anteriores de Internet Explorer y las versiones 6 y 7 en modo quirks consideran que la anchura establecida por CSS no sólo es la anchura del contenido, sino que también incluye los bordes y el relleno.
Por lo tanto, en este caso la anchura total del elemento (sin contar los márgenes laterales) es de 300
píxel, el mismo valor que se indica en la propiedad width
. El espacio ocupado por los bordes del elemento (2 x 10
) y sus rellenos (2 x 50
) se resta de la anchura de su contenido.
Para evitar este problema y crear diseños con el mismo aspecto en cualquier navegador, es necesario evitar el modo quirks de Internet Explorer. Por tanto, todas las páginas deben incluir la declaración apropiada de DOCTYPE
.
El navegador Internet Explorer 8 introduce el concepto de "compatibilidad de la página" para asegurar que todas las páginas HTML se vean correctamente en cualquier versión de ese navegador. En realidad, esta nueva característica es una mejora del modo quirks explicado anteriormente.
Internet Explorer 8, a diferencia de sus versiones anteriores, soporta completamente el estándar CSS 2.1. Sin embargo, muchos sitios web se diseñaron para Internet Explorer 6 y 7, por lo que incluyen trucos, hacks y filtros que arreglan los errores y carencias de esas versiones del navegador.
Para evitar que las páginas diseñadas para navegadores anteriores se vean mal en esta nueva versión, Internet Explorer 8 incluye la opción de "compatibilidad de la página", que permite indicar la versión de Internet Explorer para la que la página ha sido diseñada.
De esta forma, si la página no se visualiza correctamente en Internet Explorer 8, se puede indicar al navegador que la muestre como si fuera Internet Explorer 6 o 7. En realidad, Internet Explorer 8 incluye seis modos de funcionamiento:
<!DOCTYPE>
.<!DOCTYPE>
de la página. Si esa directiva es una de las que activan el modo estándar, la página se muestra en el modo estándar de Internet Explorer 7. En otro caso, se muestra en el modoquirks de Internet Explorer 5. Este modo es el más útil para la mayoría de sitios web.<!DOCTYPE>
de la página. Si esa directiva es una de las que activan el modo estándar, la página se muestra en el modo estándar de Internet Explorer 8. En otro caso, se muestra en el modoquirks de Internet Explorer 5.El modo de compatibilidad de la página se indica mediante una nueva etiqueta <meta>
con la propiedad X-UA-Compatible
y cuyo valor es el que utiliza Internet Explorer 8 para determinar el modo que se utiliza:
<!-- Modo IE5 --><head> <meta http-equiv="X-UA-Compatible" content="IE=5" /> ... </head> <!-- Modo IE7 --><head> <meta http-equiv="X-UA-Compatible" content="IE=7" /> ... </head> <!-- Modo IE8 --><head> <meta http-equiv="X-UA-Compatible" content="IE=8" /> ... </head> <!-- Emular el modo IE7 --><head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> ... </head> <!-- Emular el modo IE8 --><head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> ... </head> <!-- Modo límite --><head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> ... </head>
No obstante, esta opción de compatibilidad de la página debe entenderse como una solución temporal que evita que los sitios web se vean mal en Internet Explorer 8. La única solución correcta a largo plazo consiste en actualizar las páginas para que sus diseños sigan los estándares web.
El último elemento que forma el box model es el fondo de la caja del elemento. El fondo puede ser un color simple o una imagen. El fondo solamente se visualiza en el área ocupada por el contenido y su relleno, ya que el color de los bordes se controla directamente desde los bordes y las zonas de los márgenes siempre son transparentes.
Para establecer un color o imagen de fondo en la página entera, se debe establecer un fondo al elemento <body>
. Si se establece un fondo a la página, como el valor inicial del fondo de los elementos es transparente, todos los elementos de la página se visualizan con el mismo fondo a menos que algún elemento especifique su propio fondo.
CSS define cinco propiedades para establecer el fondo de cada elemento (background-color
,background-image
, background-repeat
, background-attachment
, background-position
) y otra propiedad de tipo "shorthand" (background
).
La propiedad background-color
permite mostrar un color de fondo sólido en la caja de un elemento. Esta propiedad no permite crear degradados ni ningún otro efecto avanzado.
El siguiente ejemplo muestra una página web con un color gris claro de fondo:
body { background-color: #F5F5F5;}
Para crear efectos gráficos avanzados, es necesario utilizar la propiedad background-image
, que permite mostrar una imagen como fondo de la caja de cualquier elemento:
CSS permite establecer de forma simultánea un color y una imagen de fondo. En este caso, la imagen se muestra delante del color, por lo que solamente si la imagen contiene zonas transparentes es posible ver el color de fondo.
El siguiente ejemplo muestra una imagen como fondo de toda la página:
body { background-image: url("imagenes/fondo.png") }
Las imágenes de fondo se indican a través de su URL, que puede ser absoluta o relativa. Suele ser recomendable crear una carpeta de imágenes que se encuentre en el mismo directorio que los archivos CSS y que almacene todas las imágenes utilizadas en el diseño de las páginas.
Así, las imágenes correspondientes al diseño de la página se mantienen separadas del resto de imágenes del sitio y el código CSS es más sencillo (por utilizar URL relativas) y más fácil de mantener (por no tener que actualizar URL absolutas en caso de que se cambie la estructura del sitio web).
Por otra parte, suele ser habitual indicar un color de fondo siempre que se muestra una imagen de fondo. En caso de que la imagen no se pueda mostrar o contenga errores, el navegador mostrará el color indicado (que debería ser, en lo posible, similar a la imagen) y la página no parecerá que contiene errores.
Si la imagen que se quiere mostrar es demasiado grande para el fondo del elemento, solamente se muestra la parte de imagen comprendida en el tamaño del elemento. Si la imagen es más pequeña que el elemento, CSS la repite horizontal y verticalmente hasta llenar el fondo del elemento.
Este comportamiento es útil para establecer un fondo complejo a una página web entera. El siguiente ejemplo utiliza una imagen muy pequeña para establecer un fondo complejo a toda una página:
Reglas CSS
body { background-image:url(imagenes/fondo.gif);}
Con una imagen muy pequeña (y que por tanto, se puede descargar en muy poco tiempo) se consigue cubrir completamente el fondo de la página, con lo que se consigue un gran ahorro de ancho de banda.
En ocasiones, no es conveniente que la imagen de fondo se repita horizontal y verticalmente. Para ello, CSS introduce la propiedad background-repeat
que permite controlar la forma de repetición de las imágenes de fondo.
El valor repeat
indica que la imagen se debe repetir en todas direcciones y por tanto, es el comportamiento por defecto. El valor no-repeat
muestra una sola vez la imagen y no se repite en ninguna dirección. El valor repeat-x
repite la imagen sólo horizontalmente y el valor repeat-y
repite la imagen solamente de forma vertical.
Las reglas CSS definidas para la cabecera son:
#hdr { background: url("/images/ds.gif") repeat-x; width: 100%; text-align: center;}
Las reglas CSS definidas para esa columna de contenidos son:
.wide #content-secondary { width: 272px; margin: 13px 0 0 0; position: relative; margin-left: -8px; background: url("./graphics/wide/bg-content-secondary.gif") repeat-y;}
Además de seleccionar el tipo de repetición de las imágenes de fondo, CSS permite controlar la posición de la imagen dentro del fondo del elemento mediante la propiedad background-position
.
La propiedad background-position
permite indicar la distancia que se desplaza la imagen de fondo respecto de su posición original situada en la esquina superior izquierda.
Si se indican dos porcentajes o dos medidas, el primero indica el desplazamiento horizontal y el segundo el desplazamiento vertical respecto del origen (situado en la esquina superior izquierda). Si solamente se indica un porcentaje o una medida, se considera que es el desplazamiento horizontal y al desplazamiento vertical se le asigna automáticamente el valor de 50%.
Cuando se utilizan porcentajes, su interpretación no es intuitiva. Si el valor de la propiedadbackground-position
se indica mediante dos porcentajes x% y%
, el navegador coloca el punto (x%, y%)
de la imagen de fondo en el punto (x%, y%)
del elemento.
Las palabras clave permitidas son equivalentes a algunos porcentajes significativos: top
= 0%, left
= 0%, center
= 50%, bottom
= 100%, right
= 100%.
CSS permite mezclar porcentajes y palabras clave, como por ejemplo 50% 2cm
, center 2cm
, center 10%
.
Si se utilizan solamente palabras clave, el orden es indiferente y por tanto, es equivalente indicar top left
y left top
.
Las reglas CSS del ejemplo anterior se muestran a continuación:
#caja1 { background-image: url("images/help.png"); background-repeat: no-repeat; background-position: bottom left;}#caja2 { background-image: url("images/help.png"); background-repeat: no-repeat; background-position: right top;}#caja3 { background-image: url("images/help.png"); background-repeat: no-repeat; background-position: 50% 50%;} <div id="caja1"><h1>bottom left</h1></div> <div id="caja2"><h1>right top</h1></div> <div id="caja3"><h1>50% 50%</h1></div>
Opcionalmente, se puede indicar que el fondo permanezca fijo cuando la ventana del navegador se desplaza mediante las barras de scroll. Se trata de un comportamiento que en general no es deseable y que algunos navegadores no soportan correctamente. La propiedad que controla este comportamiento es background-attachment
.
Para hacer que una imagen de fondo se muestre fija al desplazar la ventana del navegador, se debe añadir la propiedad background-attachment: fixed
.
Por último, CSS define una propiedad de tipo "shorthand" para indicar todas las propiedades de los colores e imágenes de fondo de forma directa. La propiedad se denomina background
y es la que generalmente se utiliza para establecer las propiedades del fondo de los elementos.
El orden en el que se indican las propiedades es indiferente, aunque en general se sigue el formato indicado de color, url de imagen, repetición y posición.
El siguiente ejemplo muestra la ventaja de utilizar la propiedad background
:
/* Color e imagen de fondo de la página mediante una propiedad shorthand */ body { background: #222d2d url(./graphics/colorstrip.gif) repeat-x 0 0; } /* La propiedad shorthand anterior es equivalente a las siguientes propiedades */ body { background-color: #222d2d; background-image: url("./graphics/colorstrip.gif"); background-repeat: repeat-x; background-position: 0 0;}
La propiedad background
permite asignar todos o sólo algunos de todos los valores que se pueden definir para los fondos de los elementos:
background: url("./graphics/wide/bg-content-secondary.gif") repeat-y; background: url("./graphics/wide/footer-content-secondary.gif") no-repeat bottom left; background: transparent url("./graphics/navigation.gif") no-repeat 0 -27px; background: none; background: #293838 url("./graphics/icons/icon-permalink-big.gif") no-repeat center left;