tipos - Aplicar un fondo a<html> y/o<body>
tipos de etiquetas html (2)
http://jsfiddle.net/julien_c/GmAL4/
Descubrí que si aplicas un fondo CSS al body , ocupa toda la página (sin importar la altura o el ancho real del body ).
Sin embargo, si aplica un fondo CSS a html y body , el fondo de body no ocupa toda la página .
¿Es esta discrepancia el comportamiento esperado?
¿Cómo podría superponer dos fondos de pantalla completa (por ejemplo, un color de fondo y una imagen semitransparente?)
Este es el comportamiento correcto . 1 En modo estándar , body , así como html , no ocupa inmediatamente toda la altura de la ventana gráfica, aunque así aparece cuando solo aplica un fondo a la última. De hecho, el elemento html tomará el fondo del body si no le da su propio fondo, y html lo pasará a la ventana gráfica:
El fondo del elemento raíz se convierte en el fondo del lienzo y su área de pintura de fondo se extiende para cubrir todo el lienzo, aunque las imágenes se dimensionan y colocan en relación con el elemento raíz como si estuvieran pintadas solo para ese elemento. (En otras palabras, el área de posicionamiento de fondo se determina como para el elemento raíz.) Si el valor ''color de fondo'' de la raíz es ''transparente'', el color de fondo del lienzo depende de AU. El elemento raíz no vuelve a pintar este fondo, es decir, el valor utilizado de su fondo es transparente.
Para documentos cuyo elemento raíz es un elemento HTML
HTMLo un elementohtmlXHTML: si el valor calculado de ''background-image'' en el elemento raíz es ''none'' y su ''background-color'' es ''transparent'', los agentes de usuario deben en su lugar propagar los valores calculados de las propiedades de fondo del primer elemento hijo delbodyHTMLBODYo XHTML de ese elemento. Los valores utilizados de las propiedades de fondo de ese elementoBODYson sus valores iniciales, y los valores propagados se tratan como si se especificaran en el elemento raíz. Se recomienda que los autores de documentos HTML especifiquen el fondo del lienzo para el elementoBODYlugar del elementoHTML.
Sin embargo, puedes superponer cualquier imagen de fondo sobre un color de fondo en un solo elemento ( html o body ), sin tener que depender de dos elementos: simplemente utiliza background-color y background-image o combínalos en taquigrafía de background propiedad:
body {
background: #ddd url(background.png) center top no-repeat;
}
Si desea combinar dos imágenes de fondo , debe confiar en múltiples fondos. Hay principalmente dos días para hacer esto:
En CSS2, aquí es donde el diseño de ambos elementos es útil: simplemente establece una imagen de fondo en
htmly otra imagen en elbodyque deseas superponer sobre la primera. Para garantizar que la imagen de fondo en elbodymuestre a la altura total de la ventana gráfica, también debe aplicarheightyheightmin-heightrespectivamente:html { height: 100%; background: #ddd url(background1.png) repeat; } body { min-height: 100%; background: transparent url(background2.png) center top no-repeat; }Por cierto, la razón por la que tiene que especificar la
heighty laheightmin-heightparahtmlybodyrespectivamente es porque ningún elemento tiene una altura intrínseca. Ambos sonheight: autopor defecto. Es la ventana que tiene 100% de altura, por lo que laheight: 100%se toma de la ventana gráfica y luego se aplica albodycomo mínimo para permitir el desplazamiento del contenido.En CSS3, la sintaxis se ha ampliado para que pueda declarar múltiples valores de fondo en una sola propiedad , eliminando la necesidad de aplicar fondos a múltiples elementos (o ajustar
height/height-min-height):body { background: url(background2.png) center top no-repeat, #ddd url(background1.png) repeat; }La única advertencia es que en un solo fondo de varias capas, solo la capa inferior puede tener un color de fondo. Puede ver en este ejemplo que falta el valor
transparentde la capa superior.Y no se preocupe: el comportamiento especificado anteriormente con la propagación de valores de fondo funciona exactamente igual incluso si utiliza fondos de varias capas.
Sin embargo, si necesita admitir navegadores más antiguos, deberá usar el método CSS2, que es compatible con IE7.
Mis comentarios en esta otra respuesta explican, con un fiddle acompaña, cómo el body está realmente desfasado de html por los márgenes predeterminados, a pesar de que parece que está siendo rellenado, de nuevo debido a este fenómeno aparentemente extraño.
1 Esto puede tener sus raíces en la configuración de los atributos HTML background y bgcolor del body hace que el atributo de fondo se aplique a toda la ventana gráfica. Más sobre eso here .
Sugerir leer esto:
https://css-tricks.com/just-one-of-those-weird-things-about-css-background-on-body/
Esencialmente, en ausencia de un background en el elemento html , el background del body cubrirá la página. Si hay un background en el elemento html , el background del body comporta como cualquier otro elemento.