- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何像所有文本区域一样使用 ResizeObserver 观察多个元素?使用 document.querySelectorAll() 会导致错误。
var ro = new ResizeObserver( entries => {
for (let entry of entries) {
// do something
}
});
// Works
ro.observe(document.querySelector('textarea'));
// Doesn't work
ro.observe(document.querySelectorAll("textarea"));
Error: VM112:8 Uncaught TypeError: Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element'.
at <anonymous>:8:4
最佳答案
querySelectorAll
返回 NodeList
, 你可以使用 .forEach
遍历每个并将其传递给观察者:
const boxes = document.querySelectorAll('.box');
const myObserver = new ResizeObserver(entries => {
for (let entry of entries) {
const width = Math.floor(entry.contentRect.width);
const height = Math.floor(entry.contentRect.height);
entry.target.value = `I'm ${ width }px and ${ height }px tall`;
}
});
boxes.forEach(box => {
myObserver.observe(box);
});
.box {
text-align: center;
border: 1px solid black;
height: 100px;
border-radius: 8px;
display: flex;
}
<textarea class="box">
</textarea>
<textarea class="box">
</textarea>
编辑:您也可以一次观察单个元素,但它们需要单独初始化:
const boxes = document.querySelectorAll('.box');
boxes.forEach(box => {
new ResizeObserver(entries => {
const width = Math.floor(entries[0].contentRect.width);
const height = Math.floor(entries[0].contentRect.height);
entries[0].target.value = `I'm ${ width }px and ${ height }px tall`;
}).observe(box);
});
.box {
text-align: center;
border: 1px solid black;
height: 100px;
border-radius: 8px;
display: flex;
}
<textarea class="box">
</textarea>
<textarea class="box">
</textarea>
关于javascript - 如何使用 ResizeObserver 观察多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519452/
我目前使用 ResizeObserver 来观察元素的大小,但我正在考虑使用 throttle (lodash 的 throttle )来提高它的性能。 const myResize = new Re
ResizeObserver有一个 observe()方法和 unobserve()方法。这似乎鼓励拥有一个 ResizeObserver实例并根据需要使用回调中的逻辑观察和不观察不同的元素以处理每个
似乎当我在 DOMContentLoaded 事件上将节点传递给 ResizeObserver.observe() 时,它会立即调用。它被认为是正常行为吗? 最佳答案 是的,此行为符合规范 (ref.
当我手动调整窗口大小时它起作用,但当我需要的内容高度改变时它不起作用。 我做错了什么吗? class MainContainer extends React.Component { constru
总结:有没有办法获取给定 ResizeObserver 当前观察到的元素列表? ? 假设一个现有的 ResizeObserver 观察一些元素 let observer = new ResizeObs
我想使用 ResizeObserver 检测 widnow resize 事件 我使用的货币 window.addEventListener('resize',() => console.log('r
我收到错误:'ResizeObserver' only refers to a type, but is being used as a value here尝试在 React 中使用 ResizeO
大约两个月前,我们开始使用 Rollbar 来通知我们 Web 应用程序中的各种错误。从那时起,我们偶尔会遇到错误: 超出 ResizeObserver 循环限制 令我困惑的是,我们没有使用 Resi
我遇到了一个问题,我什至不明白这是因为 ReactJS,还是只是 JavaScript。 基本上,如果 ResizeObserver 正在观察 DOM 的元素,则 document.elementsF
如何像所有文本区域一样使用 ResizeObserver 观察多个元素?使用 document.querySelectorAll() 会导致错误。 var ro = new ResizeObserve
当某些观察到的元素从 DOM 中删除时,我应该调用 .unobserve用于防止内存泄漏的元素,还是会“自动不被观察”? const ro = new ResizeObserver((entries)
已经打了ResizeObserver - loop limit exceeded我的 webapp 上的错误。 来自 ResizeObserver - loop limit exceeded ,我知道
我尝试测试使用 ResizeObserver 的钩子(Hook).另外,我需要检查元素是否溢出或在调整大小后没有。所以我写了这样一个决定: import { useLayoutEffect, useS
我用过 ResizeObserver在我的组件中,它工作正常。 但是运行ut时出现这样的错误: ReferenceError: ResizeObserver is not defined
我正在使用ResizeObserver(实验网络平台标志背后的谷歌浏览器支持它)。我已经使用可调整大小的 jQuery UI 创建了 codepen 演示。它在 chromium linux 上运行良
我在 Chrome 上使用 React 15,并希望连接一个事件监听器来检测父容器的更改。在四处寻找选项后,我遇到了 ResizeObserver,但不知道如何让它在我的项目中工作。 目前,我将其放入
在 D3 中尝试使用 ResizeObserver,问题是当轴重新渲染时它会留下旧渲染,留下前一个轴的“痕迹”。 代码只是一个空白图表模板,我使用 ResizeObserver 从 contentRe
我正在使用 ResizeObserver 在调整屏幕大小时调用函数,但我需要在观察器中获取状态的更新值,以便在调用函数之前确定一些条件。 是这样的: let [test, setTest] = Rea
我要查看的宽度变化(不是高度)。 有没有办法用 ResizeObserver 做到这一点? 最佳答案 这是一个例子。在 https://developer.mozilla.org/en-US/docs
我正在关注 this example , 使用以下代码 // resizable chart function const callback = (chartObj: DCGraphicTyp
我是一名优秀的程序员,十分优秀!