解决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的无限级联下拉框js插件
Oct 29 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
Bootstrap每天必学之级联下拉菜单
Mar 27 Javascript
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
JS实现分页导航效果
Feb 19 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
如何使用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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
PHP 快速排序算法详解
2014/11/10 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP实现图片压缩
2020/09/09 PHP
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
python 除法保留两位小数点的方法
2018/07/16 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
自学python的建议和周期预算
2019/01/30 Python
Python2与Python3的区别实例总结
2019/04/17 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
文秘自荐信
2013/10/20 职场文书
小学新学期教师寄语
2014/01/18 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
离婚上诉状范文
2015/05/23 职场文书
歼十出击观后感
2015/06/11 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python