解决vue项目获取dom元素宽高总是不准确问题


Posted in Javascript onJuly 29, 2020

dom元素内部内容是动态的,重置数据后直接获取宽高总是不准确:

this.$refs.editor[0].offsetHeight;

原因:重置数据后获取dom元素宽高时,dom元素还未渲染完毕;

解决方法:利用Vue.nectTick(callback)

this.$nextTick(() => {
 this.$refs.editor[0].offsetHeight;
})

Vue.nectTick() 是在下次DOM更新循环结束之后执行延迟回调

补充知识:vue 获取 指定元素的高度宽度等(使用vue中的 ref 获取到的是 dom 元素高度或者宽度)

使用 vue 的时候,想要获得一个指定的元素的高度时,可以使用 vue 中的 ref 。

当 ref 加在普通的元素上,使用 this.ref.name 获取到的是 dom 元素

示例

写在 页面 html 部分的

<div ref="init"></div>

写在 页面 方法 部分

这里的 offsetHeight 是返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)

let height= this.$refs.init.$el.offsetHeight;

这里的offsetHeight可以替换,用来获取其他的属性

offsetWidth //返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)

offsetHeight //返回元素的高度(包括元素高度、内边距和边框,不包括外边距)

clientWidth //返回元素的宽度(包括元素宽度、内边距,不包括边框和外边距)

clientHeight //返回元素的高度(包括元素高度、内边距,不包括边框和外边距)

style.width //返回元素的宽度(包括元素宽度,不包括内边距、边框和外边距)

style.height //返回元素的高度(包括元素高度,不包括内边距、边框和外边距)

scrollWidth //返回元素的宽度(包括元素宽度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientWidth相同

scrollHeigh //返回元素的高度(包括元素高度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientHeight相同

除此之外,还可以获取带有单位的数值

let height = window.getComputedStyle(this.$refs.init).height;

这样获取的值是有单位的。

以上这篇解决vue项目获取dom元素宽高总是不准确问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js宝典学习笔记(上)
Jan 10 Javascript
javascript事件问题
Sep 05 Javascript
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
javascript中replace使用方法总结
Mar 01 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
原生js实现购物车功能
Sep 23 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 #Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 #Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 #Javascript
在vue中实现给每个页面顶部设置title
Jul 29 #Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 #Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 #Javascript
Element中Slider滑块的具体使用
Jul 29 #Javascript
You might like
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
php函数连续调用实例分析
2015/07/30 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
经典c++面试题五
2014/12/17 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
新年联欢会主持词
2014/03/27 职场文书
白莲教口号
2014/06/18 职场文书
教师节感谢信
2015/01/22 职场文书
话题作文之自信作文
2019/11/15 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Java SSM配置文件案例详解
2021/08/30 Java/Android
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
详解Python中的for循环
2022/04/30 Python