解决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 相关文章推荐
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
点击表单提交时出现jQuery没有权限的解决方法
Jul 23 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
微信小程序 条件渲染详解
Oct 09 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
vue组件的写法汇总
Apr 12 Javascript
Vue点击切换颜色的方法
Sep 13 Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
如何将JavaScript将数组转为树形结构
Jun 02 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
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python中logger日志模块详解
2020/08/04 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
孝敬父母的活动方案
2014/08/28 职场文书
社区助残日活动总结
2014/08/29 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书