Foros del Web » Programando para Internet » Javascript »

Visualizar capa en la misma posición en todas las resoluciones...

Estas en el tema de Visualizar capa en la misma posición en todas las resoluciones... en el foro de Javascript en Foros del Web. Hola, ya sé que este post sería más indicado publicarlo en el foro CSS, pero es que ya lo he preguntado allí y he obtenido ...
  #1 (permalink)  
Antiguo 15/10/2005, 17:19
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Visualizar capa en la misma posición en todas las resoluciones...

Hola, ya sé que este post sería más indicado publicarlo en el foro CSS, pero es que ya lo he preguntado allí y he obtenido una respuesta "no demasiado clara", la cuentión es que tengo una capa con position:absolute que al crearla la edite en 1280x1024, en dicha resolución cuando abro la página web donde la edite se ve exactamente en la posición correcta, pero claro al verla en otra posición y ser position:absolute, se desplaza..., a otra posición de la pantalla y me estropea el diseño, a continuación pego el code que utilizo.

Código HTML:
<DIV id="Layer1" style="position:absolute; left:450px; top:946px; width:390; height:386; z-index:1;"><IMG src="imagenes/finalizado_plazo.gif" width="390" height="386"></DIV> 
¿Alguién sabe como podría modificar dicho code para que la capa se visualizase en todas las resoluciones en la misma posición que la edite?

El problema viene porque la tabla principal que contiene todo el diseño de la página esta centrada para poder visualizar la página en todas la resoluciones, entonces cuando veo al página en una resolución diferente a la en que edite la página 1280x1024, por ejemplo la visualizo en 800x600, la capa se me desplaza.

En fin ya no me enrollo más.., estaría muy agradecido si alguien me dijese cómo evitar que se me desplaze la capa.

Gracias, un saludo.
  #2 (permalink)  
Antiguo 16/10/2005, 15:44
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Posicionar capas

Hola Zertiko

El problema que estás teniendo, es muy comun en el posicionamiento de capas... y mas teniendo en cuenta que la capa tenga que formar parte de un diseño al pixel.

La unica manera (por lo menos que yo nozca) para posicionar capas de esta manera, es por medio de Javascript.

Te he preparado una función muy muy sencilla, la cual, va comentada.

A continuación te la dejo

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Capa colocada SIEMPRE en su sitio</title>
	<script language="JavaScript1.2" type="text/javascript">
		onload = function()
		{
			// cuando cargue la página, colocamos la capa
			recolocarCapa();
		}
		
		onresize = function()
		{
			// cuando se redimensione la página, colocamos la capa.
			recolocarCapa();
		}
		
		// Función para recolocar la capa
		function recolocarCapa()
		{
			// Capturamos el Objeto que es nuestra capa
			var laCapa = document.getElementById("miCapa");
			
			// Calculamos que proporciones tiene la ventana que tenemos abierta.
			var anchoNavegador =  document.body.clientWidth;
			var altoNavegador = document.body.clientHeight;
		
			// Posicionamos la capa
			// Las restas que se hacen, solo tienes que jugar con ellas hasta que inicialmente consigas posicionar la capa en el lugar adecuado. A partir de hay, lo tendrás para todo navegador y resolución
			var posicionXCapa = (anchoNavegador/2) + 100;
			var posicionYCapa = (altoNavegador/2) -10;
			
			// Asignamos a la capa las posiciones calculadas
			laCapa.style.left = posicionXCapa;
			laCapa.style.top = posicionYCapa;
		}
	</script>
</head>

<body style="margin:0px">
<table cellpadding="0" cellspacing="0" style="width:100%;height:100%" border="0">
	<tr>
		<td style="width:100%;height:100%" align="center" valign="middle" class="sp">
			<table cellpadding="0" cellspacing="0" style="width:200;height:20" border="0">
				<tr>
					<td width="200" height="20" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 10px;font-weight:bold;color: #EFEFEF;background-color:red" align="center">Este es mi texto</td>
				</tr>
			</table>
		</td>
	</tr>
</table>
<div id="miCapa" style="position:absolute; left:100px; top:100px; width:300; height:200; z-index:1;border: 1px solid Red;">
	<table cellpadding="0" cellspacing="0" style="width:300px;height:20px" border="0">
		<tr>
			<td width="300" height="19" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 10px;font-weight:bold;color: #EFEFEF;background-color:green" align="right">Este es el otro Texto</td>
		</tr>
	</table>
</div>


</body>
</html>
Te señalo un par de cosas:

Lo primero, es que está puesta la función, en la carga del documento (onload = function ... ) y en el resize de la ventana (para que si varias el tamaño de la ventana, la capa se posicione donde debe de estar).

El segundo punto que he de señalarte, y que es el motor de esta función, es lo siguiente...

var posicionXCapa = (anchoNavegador/2) + 100;
var posicionYCapa = (altoNavegador/2) -10;

Esas dos variables, les sumamos y restamos dos valores (100 y 10, en ESTE ejemplo).

Con estos dos valores son con los que tienes que jugar tú para posicionar tu capa.

Todo se mueve respecto el centro de la pantalla (lo usamos como eje cartesiano de posicionamiento).

Si quieres que tu capa aparezca a la izquierda, a la posicionXCapa, tendrás que restarle una gran cantidad de unidades...

Si quieres que la capa aparezca muy abajo de la ventana, a la posicionYCapa, tendrás que sumarle una gran cantidad de unidades...

Esto ya, es que juegues tu a sumarle y restarle valores.

Si tienes alguna duda, no dudes en decirme algo.

Un saludo, y espero que te sea util.

  #3 (permalink)  
Antiguo 17/10/2005, 17:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Hola el_javi, gracias por el code que me has pasado, me ha servido para lo que quiero, no es perfecto pero desde luego es la mejor solución que he encontrado..., el único defecto que tiene es que dependiendo de la configuración que tengas en el navegador (que se vea o no la barra de botones, barra de vinculos, etc..) el capa sube o baja en su colocación vertical, en una resolución diferente a la que la editado 1280x1024 también subo o baja algo..., pero vamos casi no se nota, en el modo horizontal siempre que el sitio justo que la editaste, en fin muchas gracias por el code, me ha servido para lo que quería.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:00.