Ich arbeite an einem Fluid-Layout-Projekt. Ich habe einige DIVs mit fester Höhe in meinem Dokument, und die Höhen sind für alle unterschiedlich. Ich muss diese DIVs Höhe auf Browserresize proportional ändern. Hier ist das Markup.jQuery dynamisch Elementhöhe ändern
<body>
<div id="a" class="target"></div>
<div id="b" class="target"></div>
<div id="c" class="target"></div>
</body>
und CSS:
<style>
body { width: 90%; margin: 0 auto;}
.target { width:30%; float:left; margin:1.6%; cursor:pointer; }
#a { height: 200px; background-color: yellow;}
#b { height: 400px; background-color: green;}
#c { height: 600px; background-color: grey;}
</style>
Klingt einfach! Die Hauptbedingung ist, dass ich die genaue Anzahl der Ziel DIVs und ihre IDs nicht kenne, deshalb verwende ich .each (function()). Hier Skript schrieb ich:
$(document).ready(function(){
//set the initial body width
var originalWidth = 1000;
/*I need to go through all target divs because i don't know
how many divs are here and what are their initial height*/
$(".target").each(function()
{
//get the initial height of every div
var originalHeight = $(this).height();
//get the new body width
var bodyWidth = $("body").width();
//get the difference in width, needed for hight calculation
var widthDiff = bodyWidth - originalWidth;
//new hight based on initial div height
var newHeight = originalHeight + (widthDiff/10);
//sets the different height for every needed div
$(this).css("height", newHeight);
});
});
Dieses Skript funktioniert einwandfrei, wenn der Benutzer die Seite neu lädt. Wie kann ich die gleichen Ergebnisse dynamisch erhalten, wenn der Benutzer die Größe des Browsers ohne Neuladen ändert? Ich weiß, ich sollte $ (window) .resize Event Listener anwenden. Aber das Problem ist, dass die Anfangshöhe des DIV innerhalb des Ereignisses berechnet wird und das Ergebnis fast wie eine Endlosschleife sein wird - das heißt, die endgültige Höhe wird in einer großen Progression zunehmen oder abnehmen. Das brauche ich nicht! Wie kann ich jede DIV Anfangshöhenberechnung außerhalb Ereignisfunktion machen und dann diese Höhen innerhalb Ereignisfunktion verwenden? Oder gibt es einen anderen Ansatz, um das gleiche Ergebnis zu erhalten?
Wirklich schnelle und einfache Lösung. Funktioniert perfekt. Vielen Dank! – theCoder