调整大小后获取实际图像大小

Nov*_*vak 14 javascript css jquery

我有一个填充缩略图的页面,用css调整大小150x150,当我点击缩略图时,页面变暗,并且图像显示为真实尺寸.

目前,我必须手动创建一个包含所有图像的实际高度的数组.为了解决设计问题+减少我的图库的手动操作,我需要在调整大小(CSS)后获得图像的实际高度.

我试过了:

var imageheight = document.getElementById(imageid).height;
Run Code Online (Sandbox Code Playgroud)

和:

var imageheight = $('#' + imageid).height();
Run Code Online (Sandbox Code Playgroud)

但两者都返回150pxCSS分配的属性.我怎么解决这个问题?谢谢

Din*_*iye 20

你有'自然'的kws来帮助你:

与js:

var imageheight = document.getElementById(imageid).naturalHeight;
Run Code Online (Sandbox Code Playgroud)

或者使用jquery

var imageheight = $('#' + imageid).naturalHeight;
Run Code Online (Sandbox Code Playgroud)

  • 对于 IE9+ 和任何其他主要浏览器,这些属性都是有效的。这是一个很好的答案!有人可能为此封装了一个 jQuery 插件。如果没有,这可能会很有趣。 (2认同)

Jos*_*eph 17

您可以这样做的一种方法是创建一个单独的图像对象.

function getImageDimensions(path,callback){
    var img = new Image();
    img.onload = function(){
        callback({
            width : img.width,
            height : img.height
        });
    }
    img.src = path;
}

getImageDimensions('image_src',function(data){
    var img = data;

    //img.width
    //img.height

});
Run Code Online (Sandbox Code Playgroud)

这样,您将使用相同的图像,但不会使用DOM上的图像,它具有已修改的尺寸.据我所知,缓存的图像将使用此方法进行回收.所以不用担心额外的HTTP请求.