初心者を助けてください。
ウィンドウの高さに比例して複数の絶対位置のdivを再スケーリングおよび再配置するjQuery関数を作成しようとしています。
私が達成しようとしている結果の種類を説明するために、次のコードを含めました。数値960は、ページ上のすべてのdivが持つ最大の高さをピクセル単位で表します。したがって、サイズを変更すると、960はウィンドウの高さの100%に等しくなります。
変数:divHeight、divLeft、divTopの場合、cssから値を取得し、関数がdivの高さを計算しないようにウィンドウのサイズが変更されたときにこれらの元の値を復元する方法がわからないため、手動で値を入力しました新しい値に基づいて位置付けます。
function scaleDivs() {
var winHeight = $(window).height();
var divHeight = 348;
var divLeft = 40;
var divTop = 100;
var percentDif = (winHeight / 960) * 100;
var newHeight = (percentDif / 100) * divHeight;
newHeight = parseInt(newHeight) + "px";
var newLeft = (percentDif / 100) * divLeft;
newLeft = parseInt(newLeft) + "px";
var newTop = (percentDif / 100) * divTop;
newTop = parseInt(newTop) + "px";
$("#panel_0").css({"height": newHeight, "left": newLeft, "top": newTop});
}
$(document).ready(function() {
scaleDivs();
$(window).bind('resize', scaleDivs);
});
私が欲しいのは、複数のdivを制御する1つの関数です-必要なcss値を自動的に取得します。
私が求めていることを実行するプラグインを誰かが知っている場合、または私が求めていることを可能にするためにコードで何を変更する必要があるかを指摘していただければ幸いです。
... 編集 ...
このソリューションは、.dataを使用して、divの高さと位置の初期値を取得します。
jQuery
function scalePanels() {
var winHeight = $(window).height();
var ratio960 = winHeight / 960;
$(".panelCont").each(function(){
var panelHeight = $(this).data("initial-height");
var newHeight = panelHeight * ratio960;
newHeight = parseInt(newHeight) + "px";
var panelTop = $(this).data("initial-top");
var newTop = panelTop * ratio960;
newTop = parseInt(newTop) + "px";
var panelLeft = $(this).data("initial-left");
var newLeft = panelLeft * ratio960;
newLeft = parseInt(newLeft) + "px";
$(this).css({"height": newHeight, "top": newTop, "left": newLeft});
});
};
$(document).ready(function() {
scalePanels();
$(window).bind('resize', scalePanels);
});
html
<div class="group_1">
<div class="panelCont" id="pnl_0a"
data-initial-height= "960"
data-initial-left= "0"
data-initial-top= "0">
<img src="images/pnl_0a.jpg" />
</div>
<div class="panelCont" id="pnl_0_title"
data-initial-height= "97"
data-initial-left= "186"
data-initial-top= "26">
<img src="images/pnl_0_title.svg" />
</div>
<div class="panelCont" id="pnl_0b"
data-initial-height= "960"
data-initial-left= "0"
data-initial-top= "0">
<img src="images/pnl_0b.jpg" />
</div>
</div>
css
body {
margin: 0 auto;
background-color: #000;
overflow-y: hidden;
}
#pnl_0a {
margin: 0px;
width: auto;
position: absolute;
z-index: 2;
}
#pnl_0_title {
margin: 0px;
width: auto;
position: absolute;
z-index: 4;
}
#pnl_0b {
margin: 0px;
width: auto;
position: absolute;
z-index: 3;
}
img {
margin: 0px;
width: auto;
height: 100%;
}
object {
margin: 0px;
height: 100%;
}