2009-10-31 6 views
28

Ich habe einige divs, die mit Position absolute (CSS) eingestellt werden, wenn die Seite bereit ist, und sind relativ zu einem anderen festen div positioniert, was gut funktioniert. Bevor jedoch die Seite geladen wird und alles eingestellt ist, folgen diese absoluten divs nicht den Änderungen, wenn die Größe der Seite geändert wird, und bewegen sich zu anderen Stellen, von denen ich denke, dass sie Werte relativ zu oben und links vom Bildschirm erhalten.Hören Browser Breite/Höhe ändert sich mit jQuery

Die Position des relativen Div, das ich als Ausgangspunkt für die Positionierung der absoluten Werte verwende, kann auch die Position relativ zu den darüber liegenden Positionen ändern.

Gibt es eine Möglichkeit, die Änderungen in der Breite/Höhe des Browsers zu hören, damit diese divs in der richtigen Position bleiben.

Vielen Dank im Voraus!

+0

Ich denke, dass dies ohne Javascript möglich wäre, wenn wir nur wüssten, was Sie eigentlich wollen. Ich weiß, dass eine Antwort akzeptiert wird, aber eine reine CSS-Antwort für diese Frage wird auch anderen helfen. – andho

+0

@andho, gerne teilen? – yoda

+0

Es wäre hilfreich, wenn Sie Beispiel-HTML für das zeigen könnten, was Sie erreichen möchten. Aus Ihrer aktuellen Frage ist es unklar, wie r-dub schon erwähnt. – andho

Antwort

80

Zuerst möchten Sie mit dem Binden des Fensters resize Ereignis an eine Funktion Ihrer Wahl beginnen.

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

Jetzt können Sie die neuen Höhen und Breiten bestimmen und von dort aus Anpassungen an der Seite vornehmen.

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

Ohne weitere Einzelheiten auf der Anlage ist es schwer zu sagen, welche Änderungen Sie genau brauchen, aber diese sollten Sie in der richtigen Richtung bekommen.

+0

Danke! Ich habe es geschafft, die Berechnungen mit dem Resize-Event in einigen sehr kleinen Codezeilen durchzuführen, viel weniger als ich erwartet hatte! – yoda

+0

Schön, ich bin froh, dass es für dich funktioniert hat. – rwilliams

+0

@yoda Wenn Sie eine Frage stellen und gute Antworten erhalten und antworten mit "Ich habe einen besseren Weg gefunden", warum poste nicht Ihren besseren Weg, es ist irgendwie wie diese Seiten funktionieren;) – Nik

4

Es ist möglicherweise nicht notwendig, JavaScript zu verwenden, wenn Sie nur Ihre Elemente relativ zu einem anderen Element als dem Gesamtdokument positionieren müssen. ": Relative Position": Sie können

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

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

</div> 

Da MyContainer position:relative hat, wird myElement absolut positioniert werden aber relativ MyContainer statt, bezogen auf das Gesamtdokument. Auf diese Weise können Sie recht ausgefeilte, aber robuste Positionen erstellen, die browsergroß sind.

+0

danke für das Zeigen, ich habe vergessen zu sagen, dass die Position des Elements, das ich als "Anker" zum Absoluten verwende, seine Position geändert hat, wenn die divs über ihre Höhe ändern, nachdem die Seite geladen ist. Außerdem ist die Seite selbst auf dem Bildschirm zentriert. – yoda

Verwandte Themen