【发布时间】:2013-03-04 22:41:31
【问题描述】:
我需要一个 div 在特定窗口宽度和特定高度之后获取其动态背景图像的高度。
所以当 div (.header-block-wrapper) >= 630px 并且窗口宽度 >= 978px 时,div 需要与其背景图像一样高。
我在这里得到的用于检测背景图像高度的代码脚本: How do I get background image size in jQuery?
整个脚本也必须在调整大小时触发,这就是我使用 ($(window).resize...) 的原因。
但它不起作用......有什么想法吗?
$(window).load(function() {
$(function(){
var innerHeight = $('.header-block-wrapper').height();
var innerWidth = $('.header-block-wrapper').width();
var backgroundHeight;
$(image).load(function () {
backgroundHeight = image.height;
});
image.src = $('.header-block-wrapper').css('background-image').replace(/url\(|\)$/ig, "");
$(window).resize(function(){
if( innerHeight >= 630px && innerWidth >= 978px) {
$('.header-block-wrapper').css("height",backgroundHeight);
}else {
$('.header-block-wrapper').css("height","auto");
}
});
});
});
编辑//我已修复:
好吧,我修复了它,而不是使用背景图像,而是使用 div 内的图像作为背景。此图像具有 100% 的宽度、自动高度和绝对值。
获取图片的高度比获取背景图片更容易。
jQuery(window).load(function() {
jQuery(window).resize(function(){
var innerHeight = jQuery('.header-block-wrapper').height();
var innerWidth = jQuery('.header-block-wrapper').width();
var imageHeight = jQuery('.header-block-image').height();
if( innerHeight >= 630 && innerWidth >= 978) {
jQuery('.header-block-wrapper').css("height",imageHeight);
}else {
jQuery('.header-block-wrapper').css("height","auto");
}
});
});
【问题讨论】:
-
图像在哪里定义? $(image) 选择什么?
-
顺便说一句,以防它为 OP 或任何阅读问题的人增加了额外的维度,可以限制 CSS3 中的背景图像大小以匹配使用背景的容器-size 属性 (developer.mozilla.org/en-US/docs/CSS/background-size)。根据用例,这可能不需要调整容器的大小。
标签: javascript jquery height background-image