2009-10-31 8 views
28

Tengo algunos divs que se establecen con posición absoluta (CSS) cuando la página está lista, y se ubican en relación con otro div fijo, que funciona bien. Sin embargo, antes de que se cargue la página y todo esté configurado, si la página se redimensiona, esos divs absolutos no siguen los cambios, moviéndose a otros lugares, que creo que reciben valores relativos a la parte superior e izquierda de la pantalla.Escuche los cambios de ancho/alto del navegador con jQuery

La posición de la div relativa que uso como punto de partida para posicionar las absolutas también puede cambiar de posición, en relación con las que están sobre ella.

¿Hay alguna manera de escuchar los cambios en el ancho/alto del navegador para que esos divs permanezcan en la posición correcta?

¡Gracias de antemano!

+0

Creo que esto podría ser posible sin javascript si supiéramos qué es lo que realmente quiere. Sé que se acepta una respuesta, pero una respuesta de CSS pura para esta pregunta ayudará a otros también. – andho

+0

@andho, ¿te importa compartir? – yoda

+0

Sería útil si puede mostrar HTML de ejemplo para lo que quiere lograr. De su pregunta actual no está claro al igual que r-dub mencionado. – andho

Respuesta

80

Primero, desea comenzar vinculando el evento de redimensionamiento de la ventana a la función que elija.

$(window).on("resize", methodToFixLayout); 

Ahora puede determinar las nuevas alturas y anchuras y hacer ajustes a la página desde allí.

function methodToFixLayout(e) { 
    var winHeight = $(window).height(); 
    var winWidth = $(window).width(); 
    //adjust elements css etc..... 
    //$("#someDiv").css('someProperty',someValue based on winHeight and winWidth); 
} 

Sin más detalles sobre el diseño que es difícil saber qué cambios que necesita exactamente, pero esto debe conseguir que va en la dirección correcta.

+0

¡Gracias! Logré hacer los cálculos con el evento de cambio de tamaño, en algunas líneas muy pequeñas de código, ¡mucho menos de lo que esperaba! – yoda

+0

Bien, me alegra que haya funcionado para ti. – rwilliams

+0

@yoda si va a hacer una pregunta y obtener buenas respuestas y responder, "Encontré una mejor manera", ¿por qué no publicar su mejor forma, es un poco cómo funcionan estos sitios;) – Nik

4

Puede que no sea necesario utilizar JavaScript si solo necesita colocar su elemento (s) relativo a otro elemento en lugar del documento en general. Puede utilizar "position: relative":

<div id="myContainer" style="position:relative"> 

    <div id="myElement" style="position:absolute;left:100px;"></div> 

</div> 

Debido myContainer tiene position:relative, myElement será absolutamente posicionado pero relativa a myContainer en lugar de en relación con el documento general. Armado con esto, puede construir posiciones bastante elaboradas, pero robustas, que serán independientes del tamaño del navegador.

+0

gracias por apuntarlo, me olvidé de decir que la posición del elemento que uso como "ancla" al absoluto ha cambiado su posición cuando los divs anteriores cambian su altura, después de que se carga la página. Además, la página en sí está centrada en la pantalla. – yoda

Cuestiones relacionadas