Hola a todos,
antes de nada gracias por dedicar unos instantes al problemilla que me ocupa. Nunca antes había escrito al foro y normalmente intento recurrir a los colegas cuando estoy atascado con algo.
El asunto en cuestión:
estoy haciendo una web, en la que cambian las imagnes de fondo. Estas aparecen con 100% de ancho, y mi deseo es que además estas aparezcan centradas verticalmente. Además las imagenes se deben redimensionar cuando se redimensiona la ventana del navegador.
Esto lo hago de la siguiente manera: inserto la imagen en una capa que ocupa toda la pantalla y con el overflow hidden e inserto la imagen con width a 100%. Solo me falta centrarla verticalmente. La propiedad Vertical-aling no sirve. Y las tipicas soluciones para centrar una imagen en el centro de la pantalla tampoco, porque las imagnes son muy grandes, y si exceden el tamaño vertical de la ventana se alinean arriba.
A un colega se le ocurrio una idea para arreglar el problemilla con js e hicimos la siguiente funcion:
function ajustarImagen(){
if (navigator.appName=="Netscape"){
altoNavegador=window.innerHeight;
}else{
altoNavegador=document.body.offsetHeight;
}
altoImagen=document.getElementById("contenido").he ight;
alto=Math.round((altoImagen-altoNavegador)/2);
document.getElementById("fondo").style.top='-' + alto + 'px';
document.getElementById("fondo").style.height=(alt oNavegador + alto) + 'px';
}
Siendo "contenido" la imagen insertada y "fondo" la capa en la que está insertada. Que se ejecuta cuando:
<body onResize="ajustarImagen()" onload="ajustarImagen()">
Esto funciona perfectamente en Mozilla y Chrome, pero no en IE, que ya no es que alinee la imagen como le da la gana, si no que no sé a donde me la manda y desaparece.
Espero haber sido bastante claro, podeis ver el ejemplo entero aquí:
Código:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<SCRIPT>
function ajustarImagen(){
if (navigator.appName=="Netscape"){
altoNavegador=window.innerHeight;
}else{
altoNavegador=document.body.offsetHeight;
}
altoImagen=document.getElementById("contenido").height;
alto=Math.round((altoImagen-altoNavegador)/2);
document.getElementById("fondo").style.top='-' + alto + 'px';
document.getElementById("fondo").style.height=(altoNavegador + alto) + 'px';
}
</SCRIPT>
<style type="text/css">
<!--
* {
margin: 0px;
}
#fondo {
height: 100%;
width: 100%;
position: absolute;
z-index: 1;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
overflow: hidden;
visibility:inherit;
vertical-align:middle;
}
-->
</style>
</head>
<body onResize="ajustarImagen()" onload="ajustarImagen()">
<div id="fondo"><img src="oso.jpg" width="100%" id="contenido" /></div>
</body>
</html>
Muchas gracias a todos.