解决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 相关文章推荐
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
Nov 17 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
利用vue+elementUI实现部分引入组件的方法详解
Nov 22 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
Apr 28 Javascript
vue单页应用的内存泄露定位和修复问题小结
Aug 02 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 Javascript
js判断密码强度的方法
Mar 18 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 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
ThinkPHP令牌验证实例
2014/06/18 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
javascript中的一些注意事项 更新中
2010/12/06 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
python下载库的步骤方法
2019/10/12 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
Django models文件模型变更错误解决
2020/05/11 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
《小草和大树》教学反思
2014/02/16 职场文书
教学质量评估实施方案
2014/03/17 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
实施意见格式范本
2015/06/05 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
详细了解java监听器和过滤器
2021/07/09 Java/Android
oracle索引总结
2021/09/25 Oracle
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python