ResizeObserverEntry.target

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.

ResizeObserverEntry 接口的只读属性 target 返回一个正在被监听的 ElementSVGElement 的引用。

一个正在被监听的 ElementSVGElement 元素。

示例

以下示例取自 resize-observer-border-radius.html见源码)。这个示例包含绿色的盒子,大小按照视口大小的百分比变化。当视口的大小改变,盒子的圆角会和盒子的大小成比例的变化。我们可以使用百分比的形式来设置 border-radius,但是很快就得到了丑陋的椭圆形角;以下这个解决方案给你提供了漂亮的方形角,可以随盒子的大小缩放。

为了获取到被监听元素的引用,以便我们在每次更改后可以更新它的 border-radius 值,我们可以使用每个条目的 target 属性——entry.target.style.borderRadius

js
const resizeObserver = new ResizeObserver((entries) => {
  for (const entry of entries) {
    if (entry.contentBoxSize) {
      entry.target.style.borderRadius = `${Math.min(
        100,
        entry.contentBoxSize.inlineSize / 10 +
          entry.contentBoxSize.blockSize / 10,
      )}px`;
    } else {
      entry.target.style.borderRadius = `${Math.min(
        100,
        entry.contentRect.width / 10 + entry.contentRect.height / 10,
      )}px`;
    }
  }
});

resizeObserver.observe(document.querySelector("div"));

规范

Specification
Resize Observer
# dom-resizeobserverentry-target

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
target

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support