2013-05-06 118 views
4

我正在获取图像的原始尺寸。通过max-width:473px;将css应用于图像,并且浏览器自动调整高度。但内部图像load event我得到原始的,非缩放大小。获取缩放图像的高度

因此,基本上原始图像尺寸为506x337,并且在css规则图像变为473x315后。我如何在load event内获得315px高度?

更新

有用于测试的片段: http://jsfiddle.net/CXNan/

+1

向我们展示您正在使用的代码? – adeneo 2013-05-06 19:03:25

+2

试过吗? 'window.getComputedStyle(document.getElementById(“idOfYourImage”),null).getPropertyValue(“height”)' – RaphaelDDL 2013-05-06 19:06:25

+0

Aha!原谅,实际上它工作。我已经将该检查移至内部负载。所以看起来有些抽象层正在搞乱图像。 – Somebody 2013-05-06 19:16:48

回答

0

您还可以使用

this.offsetHeight 

看到the fiddle。它包含只读像素大小,请参阅the reference。它在MSIE中受到支持,应该是跨浏览器可靠的。

+0

Woah的确如此。我是怎么错过的......谢谢 – Somebody 2013-05-08 09:53:35

0

除以宽高比的最大宽度,你会得到缩放高度。请注意,如果图像小于最大宽度,则不会执行缩放。像这样:

var height = img.width > 473 ? 473/(img.width/img.height) : img.height; 
+0

我正在开发滑块,它不会知道在另一个网站上展示的最大宽度。 – Somebody 2013-05-06 19:10:57

+0

..你会如何编写在其他网站上运行的JavaScript? – 2013-05-06 19:12:20

+0

将slider.js导入另一个网站... – Somebody 2013-05-06 19:17:36

1

这会给你你的元素的计算高度,因为我发布在评论@问题。

window.getComputedStyle(document.getElementById("idOfYourImage"), null).getPropertyValue("height") 

正如你们已经注意到的,不是跨浏览器(a.k.a.不是IE或老东西)。


更新

我发现这个getComputedStyle for IE,但无法测试它。 可能是可以的,因为http://ie.microsoft.com/testdrive/HTML5/getComputedStyle/说,较旧的IE API被称为currentStyle,这是“getComputedStyle for IE”使用。

用于currentStyle唯一的问题是,getComputedStyle将总是返回一个像素值,如果可能的,同时currentStyle返回原始值(因此width:50%上的CSS将返回50%,而不是母体的50%的像素大小)。