解决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 相关文章推荐
基于jQuery试卷自动排版系统
Jul 18 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
js清理Word格式示例代码
Feb 13 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
Jan 20 Javascript
微信小程序纯文本实现@功能
Apr 08 Javascript
15分钟上手vue3.0(小结)
May 20 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
javascript  Error 对象 错误处理
2008/05/18 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
javascript实现简易计算器
2017/02/01 Javascript
如何使用angularJs
2017/05/08 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
SQL SERVER面试资料
2013/03/30 面试题
中国文明网签名寄语
2014/01/18 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
入股合作协议书
2014/10/12 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
Go获取两个时区的时间差
2022/04/20 Golang