JavaScript 获取图像真正的宽度和高度

发布于 2018-09-16 22:38:52 字数 1636 浏览 1684 评论 0

CSS 帮助设计师设置一个元素的最大宽度 max-width 和最大高度 max-height ,防止布局错位,我总是把 imgiframeembed 标签设置成 max-width: 100% 这样在小屏幕的设备上依然可以浏览,不过我还是希望能够获取到图像没有被拉伸和缩小的原始尺寸。

thumb.addEventListener('onload', function() {
    console.log('My width is: ', this.naturalWidth);
    console.log('My height is: ', this.naturalHeight);
});

上面的代码中使用了 naturalWidthnaturalHeight,这是 HTML5 新增的属性,它们可以直接获取图片的原始宽高。而且这在 Fixefox/Chrome/Safari/Opera/IE9 里已经实现。

页面中的 IMG 元素想要获取图片的原始尺寸通常使用 innerWidth 属性或者使用 jQuery 的 width() 方法,但是如果给图片添加了 Width 样式,那么用 innerWidthwidth() 获得宽度就不是你想要的,因为 innerWidthwidth() 获取的是元素盒模型的实际渲染的宽度,而不是图片的原始宽度。

可以使用 naturalWidth 和 naturalHeight 去获取图片的原始尺寸,考虑的兼容问题,可以采用 new Image() 去获得图片的原始尺寸:

function  getNaturalSize(img){
  var naturalSize ={};
  if(window.naturalWidth && window.naturalHeight){
    naturalSize.width = img.width;
    naturalSize.height = img.height;
  }else{
    var image = new Image();
    image.src = img.src;
    naturalSize.width = image.width;
    naturalSize.height = image.height;
  }
  return naturalSize;
}

使用该方法可以获取图片的原始尺寸,通常在图片放大缩小,动态生成图片处需要用到该属性比较好。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文