2009-10-31 20 views
28

Mam kilka elementów div, które są ustawione z absolutną pozycją (CSS), gdy strona jest gotowa i są ustawione względem innego stałego elementu div, który działa poprawnie. Jednak zanim strona zostanie załadowana i wszystko jest ustawione, jeśli rozmiar strony zostanie zmieniony, te bezwzględne divy nie śledzą zmian, przenosząc się do innych miejsc, które moim zdaniem mają podane wartości w stosunku do górnej i lewej strony ekranu.Słuchaj zmian szerokości/wysokości przeglądarki za pomocą jQuery

Pozycja względnego elementu div, którego używam jako punktu początkowego do pozycjonowania wartości bezwzględnych, może również zmienić położenie względem tych nad nim.

Czy istnieje sposób, aby wysłuchać zmian w szerokości/wysokości przeglądarki, aby te elementy zostały umieszczone we właściwej pozycji.

Z góry dziękuję!

+0

Myślę, że to byłoby możliwe bez javascript, gdybyśmy tylko wiedzieli, czego naprawdę chcemy. Wiem, że odpowiedź jest akceptowana, ale czysta odpowiedź css na to pytanie pomoże również innym. – andho

+0

@andho, czy chcesz się podzielić? – yoda

+0

Byłoby pomocne, gdybyś mógł pokazać przykładowy kod HTML, jeśli chcesz osiągnąć to, co chcesz osiągnąć. Z twojego obecnego pytania nie jest jasne, jak wspomniano o r-dubie. – andho

Odpowiedz

80

Najpierw należy rozpocząć od powiązania zdarzenia zmiany rozmiaru okna z wybraną funkcją.

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

Teraz możesz określić nowe wysokości i szerokości i wprowadzić zmiany na stronie.

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

Bez większej specyfiki na układzie trudno powiedzieć, jakie zmiany trzeba dokładnie ale to powinno Ci idą w dobrym kierunku.

+0

Dzięki! Udało mi się wykonać obliczenia za pomocą zdarzenia zmiany rozmiaru, w bardzo małych liniach kodu, znacznie mniej niż się spodziewałem! – yoda

+0

Miło, cieszę się, że to zadziałało. – rwilliams

+0

@yoda, jeśli masz zamiar zadać pytanie i uzyskać dobre odpowiedzi i odpowiedzieć "Znalazłem lepszy sposób", dlaczego nie opublikować swojej lepszej metody, to trochę jak działają te strony;) ​​ – Nik

4

Może nie być konieczne używanie JavaScriptu, jeśli chcesz umieścić swój element (elementy) względem innego elementu zamiast całego dokumentu. Możesz użyć "position: relative":

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

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

</div> 

Ponieważ myContainer ma position:relative, myelement zostanie umieszczony absolutnie ale względna do myContainer zamiast w stosunku do ogólnej dokumentu. Uzbrojony w to, możesz skonstruować dość skomplikowane, ale solidne pozycje, które będą mieć agnostyczne rozmiary przeglądarki.

+0

dziękuję za wskazanie, zapomniałem powiedzieć, że pozycja elementu, który używam jako "kotwicy" do absolutu, zmieniła jego pozycję, gdy divy powyżej zmienią swój wzrost, po załadowaniu strony. Również strona jest wyśrodkowana na ekranie. – yoda

Powiązane problemy