【发布时间】:2015-03-27 00:04:09
【问题描述】:
我有一个包含项目列表的页面,其中每个项目都有一个包含背景图像的方形 div。此图像的尺寸可以大于或小于 div 本身。背景居中并包含在 div 中,因此它始终显示在 div 的中间。 用于此的 css 如下:
.productImage
{
width: 225px;
height: 225px;
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
margin-left:70px;
}
背景图像本身是使用修改 div 的 css 的 jQuery 调用设置的。 这就像魅力一样,但是我想知道渲染背景图像的尺寸。如果渲染小于特定尺寸,出于美学原因,我想设置背景颜色。
我目前无法检索渲染图像的尺寸。我在循环中使用了以下代码来尝试检索图像的尺寸,但这会返回图像的 原始 尺寸,然后再将它们缩放到 div 中。
images[i] = new Image();
images[i].src = $('#image'+i).css('background-image').replace(/"/g,"").replace(/url\(|\)$/ig, "");
images[i].pos = i;
images[i].onload = function() {
var position = this.pos;
width = this.width;
height = this.height;
console.log("For image "+position+" the height is "+height+" and width is "+ width);
}
如何使用 jQuery 或纯 Javascript 找出渲染背景图像的尺寸?这甚至可能吗?
提前致谢。
【问题讨论】:
-
我认为您可以通过检查包含元素的尺寸而不是背景图像本身来做到这一点,因为您将背景大小设置为
contain -
@Huangism 我也是这么想的,但是这会返回css中设置的225x225尺寸,而不是背景图像的实际尺寸。
-
你的 bg 图片有多大?如果你的 div 是一个设定的宽度,那么你的 bg 也将是一个设定的宽度。 bg size contains 将图像的最大宽度或高度设置为 225,以先出现的为准。你应该能够根据它计算出尺寸
-
嗯所以你基本上说的是它可能是一个选项来比较 bg 图像大小和 div 的尺寸,并根据它计算缩放尺寸?听起来很有道理,我试试看。谢谢!
-
类似的东西,你需要知道实际的图像大小,既然你知道 div 的大小和实际的图像大小,你应该知道它什么时候用作 bg 并且包含 bg 大小,将将背景宽度或高度设置为 225。
标签: javascript jquery css image