解决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 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
jquery validation插件表单验证的一个例子
Mar 03 Javascript
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
May 28 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
js实现的在线调色板功能完整实例
Dec 21 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
JavaScript页面加载事件实例讲解
Sep 01 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php设计模式之委托模式
2016/02/13 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
简单易懂的python环境安装教程
2017/07/13 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
员工拾金不昧表扬信
2014/01/09 职场文书
无犯罪记录证明
2014/09/19 职场文书
高中生逃课检讨书
2014/10/10 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android