深度解读vue-resize的具体用法


Posted in Javascript onJuly 08, 2020

前言

作为一名优秀的前端来说,在平时的造火箭(拧螺丝)过程中,难免要遇到一个情况,就是当窗口resize的时候,我们要进行监听,常见的方案就是 element.addEventListener("resize", cb)

但是对于切过五彩斑斓的黑的你来说,肯定也知道,如果在短时间内多次resize窗口大小,那么我们这个的cb就会被调用多次,这样来说,性能太差了,这时我们会根据我们的业务需要,添加节流或者防抖,但这真的完美了吗

首先,我们要自己手动添加监听函数,其次注意性能问题,包括上面提到的防抖节流,还有在不需要的时候卸载监听函数,最后一个点就是,我们要在我们的元素上监听,或许这里有人说,又要马儿跑又让马儿不吃草,你想怎样,别急,接下来,我们就介绍 vue-resize 这个库

初步了解vue-resize

这个库是我在使用vue-lazyload的时候偶然发现的,因为里面就是用了 vue-resize 来进行resize事件的监听,使用方法也很简单,在position不为static的元素下面使用这个component就可以了

<template>
 <div class="demo">
 <h1>Hello world!</h1>
 <resize-observer @notify="handleResize" />
 </div>
</template>

<script>
export default {
 methods: {
 handleResize () {
  console.log('resized')
 }
 }
}
</script>

<style scoped>
.demo {
 position: relative;
}
</style>

到这里或许还有人说有什么神奇地方,我们这里看看下图生成的dom结构

深度解读vue-resize的具体用法

其中id为resized是我们要监听的元素,class为resize-observer是组件生成的dom,但是我们的resize监听不是挂载在上面,是里面的object的吗,也不是,而是在object里面的window里面,有点类似于iframe,这样做有什么好处呢,相当于我们把resize的监听放到一个sandbox里面,不受外层的干扰,而对于上层来说,我只需要监听resize就好了,而不用担心它被篡改

深度解读vue-resize的具体用法

再说一句

基本上我们已经知道vue-resize带来的好处,沙箱保护,全自动卸载,对于使用者来说,唯一的要求,就是元素的position不为static,这个库远不止这点干货,毕竟作者是vue team里面的。

首先我们可以看到,这个组件添加resize-observer,它的tabindex 为-1,这意味着,tab键不会调到这个元素上

深度解读vue-resize的具体用法

同时我们看下它的样式,scoped和宽度高度跟父元素一样没什么好说的了,我们需要注意的是,z-index为-1,background-color: transparent;pointer-events: none;opacity:0,基本把各种可能的结果都考虑进去了

深度解读vue-resize的具体用法

然后,是object元素的创建,aria-hidden为true和tabindex为-1,可以说对ARIA11的处理,真的很细节

深度解读vue-resize的具体用法

结语

可以看出,小小的resize还有这么大的学问在里面,同时对于细节的处理真的很好,路漫漫其修远兮,总有一天,希望会切出五光十色的白

到此这篇关于深度解读vue-resize的具体用法的文章就介绍到这了,更多相关vue-resize解读内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
List the UTC Time on a Computer
Jun 11 Javascript
jQuery 常见开发使用技巧总结
Dec 26 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
jquery 动态合并单元格的实现方法
Aug 26 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 Javascript
JavaScript函数基础详解
Feb 03 Javascript
jQuery列表检索功能实现代码
Jul 17 jQuery
es6基础学习之解构赋值
Dec 10 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
Vue结合路由配置递归实现菜单栏功能
Jun 16 Javascript
详解React 条件渲染
Jul 08 #Javascript
webpack5 联邦模块介绍详解
Jul 08 #Javascript
实例讲解React 组件
Jul 07 #Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 #Javascript
详解React 元素渲染
Jul 07 #Javascript
JS数据类型判断的几种常用方法
Jul 07 #Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 #Javascript
You might like
php strnatcmp()函数的用法总结
2013/11/27 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
js实现日期级联效果
2014/01/23 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
Django中使用第三方登录的示例代码
2018/08/20 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
周年庆典邀请函范文
2014/01/23 职场文书
情侣吵架检讨书
2014/02/05 职场文书
跳蚤市场口号
2014/06/13 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
劳资员岗位职责
2015/02/13 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
python爬虫--selenium模块
2021/03/31 Python
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js