【问题标题】:Detect divs height and changing it equal to background-image height检测 div 高度并将其更改为等于背景图像高度
【发布时间】: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


【解决方案1】:

为什么不尝试使用 CSS 来实现这一点。

如果您的最小目标图像尺寸为“宽度 = 800 像素”和“高度 = 600 像素”,则其他图像从高于此指定目标尺寸递增。做

.header-block-wrapper {
min-width:800px;
min-height:600px;
margin: auto;
}

为它分配你需要的默认高度和宽度,然后当你转储任何更大的东西时,如果你的 CSS 中有超过这个默认指定大小的图像,它会扩展以适应。

【讨论】:

  • 我不明白这应该如何工作,因为如果 div 高度为 630 像素,它应该与其背景图像一样高,而不是使用背景图像动态调整大小。
  • 背景图片不会强制任何东西调整大小,因此不能按照 OP 仅使用 CSS 的方式完成。
  • 类中没有图像。该类仅充当容器。好吧,如果他打算向其中添加背景图像...我猜他需要使用 JavaScript 解决方案然后创建所需的容器。
  • 不,它不是......但你给了我一个想法,因为你在谈论 auf image-size。
  • 我的解决方案是简单地创建一个 div 并为其分配默认的最小宽度和最小高度。当您将背景图像插入 div 时,它将检查新的宽度和高度是否高于定义的默认值,然后递增以适应。就是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 2022-01-21
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多