请帮助一个菜鸟。
我正在尝试创建一个 jQuery 函数,它将与窗口高度成比例地重新缩放和重新定位多个绝对定位的 div。
我已经包含以下代码来说明我想要达到的结果。数字 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 的功能 - 自动获取所需的 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%;
}