私は流体レイアウトプロジェクトに取り組んでいます。私は私の書類にいくつかの固定された高さのDIVを持っていて、その高さはすべて異なっています。私は比例的にブラウザのサイズ変更でこれらのDIVの高さを変更する必要があります。ここにマークアップがあります。jQueryは要素の高さを動的に変更します
<body>
<div id="a" class="target"></div>
<div id="b" class="target"></div>
<div id="c" class="target"></div>
</body>
と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>
は簡単ですね! 主な条件は、私ははターゲットDIVとそのIDのprecize量を知っていないので、私は.each(function())を使用している理由です。 ここにスクリプトを書いてあります。
$(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);
});
});
このスクリプトは、ユーザーがページを再読み込みすると完全に機能します。 ユーザーがリロードせずにブラウザのサイズを変更したときに、どのように同じ結果を得ることができますか? 私は$(window).resizeイベントリスナを適用するべきであることを知っています。しかし問題は、DIVの初期の高さがイベントの中で計算され、結果が無限ループのようなものになることです。つまり、最終的な高さは巨大な進行で増減します。私はそれを必要としません! どうすればをそれぞれ DIVの初期高さ計算の外にイベント関数として作成し、これらの高さをイベント関数内で使用できますか?または、同じ結果を得るために別の方法があるかもしれませんか?
Realy quick and easy solution。完璧に動作します。ありがとう! – theCoder