HTMLImageElement: naturalHeight 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

HTMLImageElement 接口的 naturalHeight 属性是一个只读值,它返回图像的固有(自然)、经过密度校正后的高度,单位是 CSS 像素

这是图像在没有任何高度限制时绘制出来的高度;如果您没有为图像指定高度,或者将图像放置在一个限制或明确指定图像高度的容器内,它将以这个高度进行渲染。

注意: 大多数情况下,固有高度就是服务器发送的图像的实际高度。然而,浏览器可能会在将图像推送到渲染器之前对其进行修改。例如,Chrome 在低端设备上降低图像分辨率。在这种情况下,naturalHeight 将会考虑这些浏览器干预修改后的图像高度作为固有高度,并返回该值。

一个整数值,指示图像的固有高度(以 CSS 像素为单位)。这是图像在未设定限制或特定值时自然绘制的高度。与 height 不同,这个自然高度会根据显示它的设备的像素密度进行校正。

如果固有高度不可用——无论是由于图像未指定固有高度,还是由于无法获取图像数据来获得此信息——naturalHeight 将返回 0。

示例

此示例显示了图像的自然、经过密度调整的大小以及受页面 CSS 和其他因素影响的渲染大小。

HTML

html
<div class="box">
  <img
    src="/en-US/docs/Web/HTML/Reference/Elements/img/clock-demo-400px.png"
    class="image"
    alt="A round wall clock with a white dial and black numbers" />
</div>
<pre></pre>

HTML 提供了一个 400x398 像素的图像,该图像被放置在一个 <div> 中。

CSS

css
.box {
  width: 200px;
  height: 200px;
}

.image {
  width: 100%;
}

上面 CSS 中最值得注意的是,用于图像将要绘制的容器的样式宽度为 200px,并且图像将绘制以填满其宽度(100%)。

JavaScript

js
const output = document.querySelector("pre");
const image = document.querySelector("img");

image.addEventListener("load", (event) => {
  const { naturalWidth, naturalHeight, width, height } = image;
  output.textContent = `
Natural size: ${naturalWidth} x ${naturalHeight} pixels
Displayed size: ${width} x ${height} pixels
`;
});

JavaScript 代码将自然大小和显示大小转储到 <pre> 元素中。这是在响应图像的 load 事件处理程序时完成的,以确保在尝试检查其宽度和高度之前图像可用。

结果

规范

规范
HTML
# dom-img-naturalheight-dev

浏览器兼容性