我在中间制作了一个带有响应式img的标题。我想计算2个div。 1在img之上; img底部的1; 除了小型设备外,计算结果还可以。
首次加载页面时,情况就是这样:http://i.imgur.com/hdJnIId.png 如果我重新加载页面,则会发生以下情况:http://i.imgur.com/pY6GkpN.png
仅在小于440px的屏幕中发生
这是我使用的Jquery:
$(document).ready(function() {
$(window).resize(function() {
getWidthAndHeight();
});
$(window).load(function() {
getWidthAndHeight();
});
});
function getWidthAndHeight (){
var full = $('.header-main').outerHeight (),
hImg = $('.hd-m-m').height (),
x = hImg,
y = full - x,
c1 = y * 0.3,
c2 = (y * 0.7) + 5,
ct = c1 + c2 + x; //used only to confirm the result - console.log
$('.hd-m-t').css({'height': c1});
$('.hd-m-b').css({'height': c2});
}
Ps。:我有' +5'因为我使用了一个margin-top:-5px来覆盖img之后的一个小空白区域。
这是我的HTML
<header id="home" class="full"><!-- home -->
<div class="header-bg"></div><!-- background images -->
<div class="header-main">
<div class="hd-s"></div> <!-- div on left side -->
<div class="hd-m">
<div class="hd-m-t"></div> <!-- top div - needs calc -->
<div class="hd-m-m"> <!-- middle div -->
<img src="img/home/home-logo.png" />
</div>
<div class="hd-m-b"> <!-- bottom div - needs calc -->
<h2>main text</h2>
<h2>sub text</h2>
</div>
</div>
<div class="hd-s"></div> <!-- div on right side -->
</div><!-- transparent logo -->
</header>
这是我正在寻找的最终结果:http://i.imgur.com/vnS3BGb.png 我想这样,因为背景img将具有视差效果,我希望它只显示标识透明度。
任何人都可以帮助我吗?
答案 0 :(得分:0)
好的,所以,过了一段时间,我没有找到任何解决这个问题但是这个'修复'。 我不知道这是不是最好的方式,但我们走了:
我更改了$(document).ready部分,所以现在它在所有内容加载后执行该函数(包括img)。这解决了底部的额外余量。
$(document).ready(function() {
$(window).load(function() {
getWidthAndHeight();
});
$(window).resize(function() {
getWidthAndHeight();
});
});
由于底部缺少的背景仅发生在小于440px的屏幕中,因此我在函数中添加了一个if条件,并带有额外的计算结果。 missin背景始终是相同的高度。但是我也把这个函数移到了$(document).ready这是最终的代码:
$(document).ready(function() {
$(window).load(function() {
getWidthAndHeight();
});
$(window).resize(function() {
getWidthAndHeight();
});
function getWidthAndHeight (){
var full = $('.header-main').outerHeight (),
hImg = $('.hd-m-m').height (),
x = hImg,
y = full - x,
c1 = y * 0.3,
c2 = (y * 0.7) + 5,
c3 = c2 + 17,
ct = c1 + c2 + x;
$('.hd-m-t').css({'height': c1});
if ($(window).width() < 440) {
$('.hd-m-b').css({'height': c3});
} else {
$('.hd-m-b').css({'height': c2});
};
}
});
如果有人知道更好的答案,我会很感激。 = d 谢谢@SableFost你给了我一些很好的建议(甚至学习额外的东西)。