2009-10-31 6 views
28

J'ai quelques divs qui sont définies avec la position absolue (CSS) lorsque la page est prête, et sont positionnés par rapport à un autre div fixe, Wich fonctionne très bien. Cependant, avant que la page soit chargée et que tout soit positionné, si la page est redimensionnée, ces divs absolus ne suivent pas les changements, se déplaçant vers d'autres endroits, auxquels je pense qu'ils reçoivent des valeurs relatives en haut et à gauche de l'écran.Écoutez la largeur navigateur/hauteur change avec jQuery

La position de la div par rapport je l'utilise comme point de départ pour positionner les absolues peuvent changer de position et, par rapport à ceux au-dessus.

Est-il possible d'écouter les changements de largeur/hauteur du navigateur afin de rendre ces divs rester placé dans la bonne position.

Merci d'avance!

+0

Je pense que cela pourrait être possible sans javascript si seulement nous savions ce que vous voulez réellement. Je sais qu'une réponse est acceptée, mais une réponse css pure pour cette question aidera aussi les autres. – andho

+0

@andho, soin de partager? – yoda

+0

Il serait utile si vous pouvez montrer l'exemple HTML pour ce que vous voulez réaliser. De votre question actuelle, il n'est pas clair, tout comme r-dub mentionné. – andho

Répondre

80

D'abord, vous voulez commencer par lier l'événement resize fenêtre à une fonction de votre choix.

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

Maintenant, vous pouvez déterminer les nouvelles hauteurs et largeurs et faire des ajustements à la page à partir de là.

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

Sans plus de détails sur votre mise en page, il est difficile de dire ce que les changements que vous aurez besoin exactement, mais cela devrait vous permettre d'aller dans la bonne direction.

+0

Merci! J'ai réussi à faire les calculs avec l'événement de redimensionnement, dans de très petites lignes de code, beaucoup moins que ce à quoi je m'attendais! – yoda

+0

Bien, je suis content que ça a marché pour vous. – rwilliams

+0

@yoda Si vous allez poser une question et obtenir de bonnes réponses et répondre avec, "J'ai trouvé une meilleure façon", pourquoi ne pas poster votre meilleur moyen, c'est un peu comment ces sites fonctionnent;) – Nik

4

Il peut ne pas être nécessaire d'utiliser JavaScript si vous ne devez positionner votre élément (s) par rapport à un autre élément au lieu du document dans son ensemble. Vous pouvez utiliser "position: relative":

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

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

</div> 

Parce que myContainer a position:relative, myElement sera positionné tout à fait, mais par rapport à myContainer au lieu de par rapport à l'ensemble du document. Armé de ceci, vous pouvez construire des positions assez élaborées mais robustes qui seront agnostiques au niveau du navigateur.

+0

merci de le pointer, j'ai oublié de dire que la position de l'élément que j'utilise comme "ancre" à l'absolu a changé sa position lorsque les divs ci-dessus changent de hauteur, après que la page soit chargée. En outre, la page elle-même est centrée sur l'écran. – yoda