Web API:ResizeObserver——监听元素大小的变化

这篇具有很好参考价值的文章主要介绍了Web API:ResizeObserver——监听元素大小的变化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近突然发现了ResizeObserver 感觉挺有用的就简单学习了一下。

众所周知window.resize事件能帮我们监听窗口大小的变化。但是reize事件会在一秒内触发将近60次,所以很容易在改变窗口大小时导致性能问题。换句话说,window.resize事件通常是浪费的,因为它会监听每个元素的大小变化(只有window对象才有resize事件),而不是具体到某个元素的变化。

ResizeObserver 可以监听到 Element 的内容区域或 SVGElement的边界框改变。内容区域则需要减去内边距 padding。

参考:web API ResizeObserver

使用

兼容性

兼容性还是可以的,当然IE除外,毕竟微软自己都放弃了。
resizeobserver,JavaScript,学习,前端,javascript,vue.js

语法

const resizeObserver = new ResizeObserver(entries => {
  for (let entry of entries) {
  }
});

方法

ResizeObserver.disconnect()
取消和结束目标对象上所有对 Element或 SVGElement 观察。

ResizeObserver.observe()
开始观察指定的 Element或 SVGElement。

ResizeObserver.unobserve()
结束观察指定的Element或 SVGElement。

demo

<template>
    <div class="container" id="test">
        {{size}}
    </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';

const size = ref('');

onMounted(() => {
    size.value = '400 * 100';

    // 创建观察对象
    const resizeObserver = new ResizeObserver(entries => {
        // console.log(entries[0]);
        size.value = `${entries[0].contentRect.width} * ${entries[0].contentRect.height}`;
    });
    // 指定要观察的dom
    const test = document.getElementById('test');
    if (test) {
        resizeObserver.observe(test);
    }
});

</script>
<style lang="scss" scoped>
.container {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 400px;
    height: 100px;
    overflow: hidden;
    border: 1px solid red;
    resize: both;
}
</style>

注意:
css的resize 需要将overflow设置为hidden 才生效

效果
resizeobserver,JavaScript,学习,前端,javascript,vue.js文章来源地址https://www.toymoban.com/news/detail-635131.html

到了这里,关于Web API:ResizeObserver——监听元素大小的变化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JS 监听元素dom变化

    我们在开发中,会遇到一些需求,需要监听元素变化,比如元素属性变化,元素大小变化,今天,我们就来聊聊俩种常用实现监听的方案,其他的自行研究 一、ResizeObserver ResizeObserver 是来监听元素的大小位置发生变化,也可以说是回流(重排)时的变化 然后,我们创建监听器,

    2024年02月15日
    浏览(52)
  • vue报错Uncaught runtime errors: × ERROR ResizeObserver loop limit exceeded at handleError (webpack

    Uncaught runtime errors: × ERROR ResizeObserver loop limit exceeded at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:252:58) at eval (webpack-internal:///./node_modules/webpack-dev-serve 问题原因: 使用了el-table组件+弹性布局 弹性布局 单独使用都不会报错,但是两个结合在一起就产生了

    2024年02月11日
    浏览(41)
  • 【Vue】运行Vue项目时使用element-ui报错:ResizeObserver loop limit exceeded at eval...

    vue3项目使用element plus的el-table组件,在切换页面时报错 报错信息为: ResizeObserver loop limit exceeded at eval (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:296:58) 如下图: 相关代码如下: 查阅相关解答之后,找到了比较可能的原因: 网友:Qyouu element-ui 自2.3.5版本后,Ta

    2024年02月11日
    浏览(70)
  • vue3 封装自定义指令,监听元素宽高的变化

    最近做一个项目,涉及到echart图,要去根据父元素去自适应宽高,所以需要监听到元素的宽高变化、 因为是 监听某一元素的宽高变化 ,所以这里用的是 ResizeObserver. ResizeObserver 是可以监听到DOM元素,宽高的变化,需要注意的一点就是监听出变化结果是contentBox的宽度和高度。

    2024年02月07日
    浏览(33)
  • Property xxx was accessed during render but is not defined on instance. 和 ResizeObserver loop limit

    问题出现,在Vue3中引入了elementui相关报错 关于今天在Vue3中遇到的Property \\\"size\\\" was accessed during render but is not defined on instance. 然后还报错了ResizeObserver loop limit /(ㄒoㄒ)/~~ 出现的报错意思是 \\\" 属性\\\'xxx(size)\\\'在渲染期间被访问,但未在实例上定义 \\\" 引入elementui中Vue3template里的相关代

    2024年02月13日
    浏览(30)
  • layui中使用JavaScript监听下拉框(select)的变化,根据选中的值来决定是否显示或隐藏input元素

    HTML和CSS用于设置网页的基本结构和样式,而JavaScript则用于实现交互功能,比如根据下拉框的选项来控制input元素的显示或隐藏。 以下是一个简单的例子,使用JavaScript监听下拉框(select)的变化,然后根据选中的值来决定是否显示或隐藏input元素: HTML: JavaScript: 在这个例子中

    2024年02月04日
    浏览(40)
  • chrome浏览器技巧,如何查看web页面上元素绑定的监听事件

    第一步:首先通过 F12 进入开发者工具页面。 第二步:选中 Elements 页签内对应的元素,可以用一个按钮来试一试。 第三步:右边选择 Event Listeners 页签,并取消勾选 Ancestors All。这个包含该元素所有父类绑定的监听事件。 如下图所示:图中的提示框的确定按钮就绑定了一个

    2024年02月13日
    浏览(37)
  • web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

    1、版本一的样式比较齐全; 2、版本二的JS逻辑和功能效果比较完善,且是别人的代码,后续会对样式进行完善。[Gitee | 哔哩哔哩]; 3、两个版本各有千秋,主要学习里面的一些技巧,这里主要介绍版本一的样式技巧; 4、行为验证码一般是后端实现,而且大概率是使用第三方

    2024年04月17日
    浏览(42)
  • 监听数组Array变化或Obj属性变化

    工作中经常会遇到监听数组发生变化时执行相应的回调触发逻辑,客户应用场景中需要实现对象变量的动态监听,当变量发生变化时触发回调函数,实现事件发送等应用场景。       通常由以下两种方式实现需求 一.通过改变对象原型prototype方法实现回调监听 二.利用Proxy对象

    2024年02月09日
    浏览(31)
  • Android布局字体大小不根据用户设置字体大小变化而变化

    先获取用户设置字体配置 fontSize 正常是1 大的是1.2 小的是 0.9 不一定就是这个值 差不多就是这样的 然后设置字体大小,如果像设置16sp 即可

    2024年01月25日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包