首页 > 其他分享 > js 浏览器的5种observer 第三种 ResizeObserver 详解及使用方法

js 浏览器的5种observer 第三种 ResizeObserver 详解及使用方法

时间:2023-09-12 18:55:14浏览次数:38  
标签:浏览器 observer js 尺寸 ResizeObserver const ro 监听

 

ResizeObserver 它允许开发者监听元素的尺寸变化。 在前端开发中,元素尺寸的变化可能会受到许多因素的影响,例如窗口大小调整、设备方向变化、内部内容变化等。 提供了一种高效的方法来响应这些变化,而不需要频繁使用事件监听器或轮询技术。

1. 使用方法

const ro = new ResizeObserver(entries => {
    for (let entry of entries) {
        const { width, height } = entry.contentRect;
        console.log(`Element size: ${width} x ${height}`);
    }
});

// 开始监听目标元素
const targetElement = document.querySelector('.resize-me');
ro.observe(targetElement);

// 停止监听
// ro.unobserve(targetElement);

2. 监听多个元素

const targetElements = document.querySelectorAll('.resize-me');
targetElements.forEach(elem => {
    ro.observe(elem);
});

3. 应用场景

- **响应式布局**: 随着元素尺寸的变化,动态调整布局或样式。
- **动态容器**: 监听内容动态加载的容器的尺寸,以便进行布局调整。
- **Canvas 渲染**: 根据容器的尺寸变化,动态调整 canvas 的渲染尺寸或内容。
- **SVG 调整**: 动态调整 SVG 图形的尺寸或形状。

4. 浏览器兼容性

在现代浏览器中得到了广泛的支持,但老版本的浏览器可能不支持。为了解决这个问题,可以使用resize-observer-polyfill,这是一个为老版本浏览器提供 ResizeObserver 功能的 polyfill。
- Chrome 64+
- Firefox 69+
- Safari 13.1+
- Edge 79+
    
但是,总是建议开发者查阅最新的兼容性数据,例如可以访问 查看兼容 以获取最新的浏览器支持信息。

5. 结语

利用它,开发者可以更加轻松地处理和响应元素的尺寸变化,从而创建出更加流畅、响应迅速的用户体验。

标签:浏览器,observer,js,尺寸,ResizeObserver,const,ro,监听
From: https://www.cnblogs.com/anans/p/17697530.html

相关文章

  • js 浏览器的5种observer 第一种 MutationObserver 详解及使用方法
     MutationObserver提供了监听DOM树变化的能力。从简单的UI变更追踪到复杂的SPA页面变化都有涉及。可以追踪DOM树的变化,包括节点的增加、删除、属性的修改等。它是异步的,这意味着它会将所有的DOM变化集合起来一次性报告,而不是在每一次变化后立刻报告。兼容性Mutat......
  • js 浏览器的5种observer 第二种 IntersectionObserver 详解及使用方法
     IntersectionObserver是一个现代的浏览器API,允许开发者在某个元素与其祖先元素或顶层文档视口发生交叉时得到通知。它非常适合实现图片懒加载、无限滚动、广告曝光率等功能。1.浏览器的兼容性IntersectionObserver目前在大多数现代浏览器中都得到了支持。但是在一些老版......
  • React框架下如何集成H.265网页流媒体EasyPlayer.js视频播放器?
    H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8)、WebRTC等格式的视频流。在功能上,EasyPlayer支持直播、点播、录像、快照截图、MP4播放......
  • python中JSON数据处理
    python和json数据类型对应关系PythonJSONdictionaryobjectlistarraystringstringint,floatnumberboolean(True,False)boolean(true,false)Nonenull需要注意的是,Python支持一些JSON不支持的数据类型,如元组(tuple)、集合(set)和字节串(bytes)。因此,在......
  • RTMP视频服务器EasyDSS互联网视频直播点播平台如何基于FastDFS、ffmpeg、videojs实现
    互联网视频直播点播EasyDSS平台能实现视频流媒体的上传、转码、存储、录像、推流、拉流、直播等功能,在场景上,可以应用到互联网教育、在线课堂、游戏直播、视频点播、无人机等领域。 视频点播平台是指提供用户上传、存储和播放视频内容的在线平台。它可以让用户随时随地观看各......
  • [RxJS] Scheduler
    classObservable{constructor(subscribe){this._subscribe=subscribe;}subscribe(observer){returnthis._subscribe(observer);}staticof(value){returnnewObservable((observer)=>{observer.next(value);obse......
  • Python3 JSON 数据解析
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。Python3中可以使用json模块来对JSON数据进行编解码,它包含了两个函数:json.dumps(): 对数据进行编码。json.loads(): 对数据进行解码。在json的编解码过程中,Python的原始类型与json类型会相互转......
  • js&jquery(写法对比):get input value(获取input值)
    1.JS写法 2.jquery写法 ......
  • JS小方法,一行搞定
    1.数组去重从数组中删除所有重复值,实现方式非常多,我们这里一行代码搞定:constduplicate=(arr)=>[...newSet(arr)];console.log(duplicate(["a","b","c","c","a","b"]));//['a','b','b']2.检查对象是否为......
  • wkt转换成geojson的代码
    安装及导入(在安装shapely之前一定要先安装geos)pipinstallgeospipinstallshapely下面是一个使用Python将WKT转换为GeoJSON的代码示例:importjsonfromshapely.wktimportloadswkt="POINT(1010)"shape=loads(wkt)geojson=json.dumps(shape.__geo_inter......