ResizeObserverEntry: target 属性

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2020 年 7 月以来,它已在各大浏览器中可用。

targetResizeObserverEntry 接口的一个只读属性,它返回对正在被观察的 ElementSVGElement 的引用。

一个 ElementSVGElement,表示正在被观察的元素。

示例

以下代码片段取自 resize-observer-border-radius.html查看源码)示例。这个示例包含一个绿色的盒子,其大小是视口大小的百分比。当视口大小改变时,盒子的圆角会按比例改变。我们可以使用百分比的 border-radius 来实现这个功能,但这很快会导致难看的椭圆形角;而这个解决方案为你提供了漂亮的方形角,并且可以随盒子大小缩放。

为了获取被观察元素的引用,以便在每次更改后更新其 border-radius 值,我们使用了每个 entry 的 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"));

规范

规范
Resize Observer(调整大小观察器)
# dom-resizeobserverentry-target

浏览器兼容性