You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript获取CSS zoom缩放后图片的实际尺寸?

如何获取CSS zoom缩放后图片的实际显示尺寸

问题场景

给图片设置CSS zoom 属性做缩放后,直接用 img.height 或 img.width 获取到的是图片原始尺寸,而非页面上实际显示的大小,怎么解决这个问题?

可行解决方案

有两种可靠方式可以拿到缩放后的实际尺寸:

方法1:用getBoundingClientRect() API

这个方法会返回元素在视口中的真实布局尺寸,已经自动包含了zoom以及其他CSS变换的影响,是最通用的方案。

示例代码:

var img = document.getElementById('img');
var box = document.getElementById('box');
var rect = img.getBoundingClientRect();

box.innerHTML += "<br />实际显示高度: " 
    + rect.height +
    "px<br />实际显示宽度: "
    + rect.width + "px";

方法2:计算缩放比例×原始尺寸

先获取元素的zoom值,转成小数后和原始尺寸相乘,就能得到实际显示的大小。

示例代码:

var img = document.getElementById('img');
var box = document.getElementById('box');
// 获取zoom值,默认缩放比例为1
var zoom = parseFloat(window.getComputedStyle(img).zoom) || 1;
var actualHeight = img.height * zoom;
var actualWidth = img.width * zoom;

box.innerHTML += "<br />实际显示高度: " 
    + actualHeight +
    "px<br />实际显示宽度: "
    + actualWidth + "px";

方法对比

  • getBoundingClientRect() 适配性更强,除了zoom,还能处理transform: scale()这类其他尺寸变换场景;
  • 比例计算法只针对zoom属性,逻辑更直接,但如果元素同时有其他变换,结果可能不准确。

完整示例代码

HTML

<div id="box">
  <img id="img" src="https://tse2.mm.bing.net/th/id/OIP.Lt_KplHna5Rxc5JdcOAXuQHaHa?rs=1&pid=ImgDetMain" />
</div>

CSS

#img{zoom:20%}

JavaScript(结合方法1)

var img = document.getElementById('img');
var box = document.getElementById('box');

// 先展示原始尺寸
box.innerHTML += "原始高度: " + img.height + "px<br />原始宽度: " + img.width + "px";

// 再展示实际显示尺寸
var rect = img.getBoundingClientRect();
box.innerHTML += "<br />实际显示高度: " + rect.height + "px<br />实际显示宽度: " + rect.width + "px";

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:01:09