这篇文章主要讲解了“ResizeObserverAPI如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ResizeObserverAPI如何使用”吧!当我们需要知道一个元素的大小变化或者屏幕横竖屏时,我们需要监听window.resize事件或者window.orientationchange方法。由于reize事件会在一秒内触发将近60次,所以很容易在改变窗口大小时导致性能问题。换句话说,window.resize事件通常是浪费的,因为它会监听每个元素的大小变化(只有window对象才有resize事件),而不是具体到某个元素的变化。如果我们只想监听某个元素的变化的话,这种操作就很浪费性能了。而ResizeObserver API就可以帮助我们:监听一个DOM节点的变化,这种变化包括但不仅限于:某个节点的出现和隐藏某个节点的大小变化ResizeObserver API是一个新的JavaScript API,与IntersectionObserver API非常相似,它们都允许我们去监听某个元素的变化。实际上,ResizeObserver API使用了观察者模式,也就是我们常说的发布-订阅模式。发布-订阅模式是JavaScript中典型的设计模式,在很多地方都有使用到。如Nodejs的Event模块,Vue的父子组件通信等等。所以呢,我个人认为,ResizeObserver API的出现是用于替代window.resize方法糟糕的性能的。虽然可以用来替代resize事件。但是它,很新,新到只有部分浏览器支持。但是不要怂呀,如果想使用它,可以使用其polyfill。最低可以兼容到IE免费云主机域名8以上的浏览器啦。所以以后在开发过程中如果想使用resize事件监听DOM的大小变化时,何不尝试一下ResizeObserver API呢?使用ResizeObserver API非常简单。ResizeObserver是个构造函数。在使用new关键字调用构造函数,返回实例对象时,需要传入一个回调函数,这个回调用于监听实例对象某个DOM节点的变化。如以上,调用实例对象的observe方法,监听整个body节点的变化,当改变窗口大小或者某个DOM节点出现或隐藏时时,就会触发回调。触发回调后的第一个参数是一个ResizeObserverEntry对象。这里的entry.target是DOM节点本身,而entry.contentRect是一个对象,包含了节点的位置属性,如width, height, left, right, bottom, left, x, y等。width
:指元素本身的宽度,不包含padding,border值height
:指元素本身的高度,不包含padding,border值top
:指padidng-top的值left
:指padding-left的值right
:指left + width的值bottom
: 值top + height的值x
:大小与top相同y
:大小与left相同,不知道具体是指什么明白了contentRect之后,就可以在使用这个api的时候针对不同场景获取不同的值进行业务的开发。接着,如果想在监听多个DOM节点的变化,直接在一个实例对象上调用多次observe方法就好了。如然后,实例对象myObserver方法除了有observe方法之外,还有disconnect方法和unobserve方法。unobserve方法,顾名思义了,就是取消监听某个DOM节点。比如说想在两秒后取消监听document.body,那么这样做就好了disconnect方法呢,就是取消对所有节点的监听。比如说想在四秒后取消监听所有节点,那么最后,在使用ResizeObserver API的时候,在每次触发元素的大小变化时,会在1s内触发回调蛮多次的。如果想进一步优化性能,可以加上throttle节流函数处理感谢各位的阅读,以上就是“ResizeObserverAPI如何使用”的内容了,经过本文的学习后,相信大家对ResizeObserverAPI如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!
这篇文章主要介绍“css中的float属性有什么作用”,在日常操作中,相信很多人在css中的float属性有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css中的float属性有什么作用”的疑惑有所帮助!接下来,请跟着…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。