解决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的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
Dec 30 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
10分钟掌握XML、JSON及其解析
Dec 06 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
vue实现点击选中,其他的不选中方法
Sep 05 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
php不用正则采集速度探究总结
2008/03/24 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
js加强的经典分页实例
2013/03/15 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
node.js的事件机制
2017/02/08 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
Python requests接口测试实现代码
2020/09/08 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
行政总经理岗位职责
2013/12/05 职场文书
大学新学期计划书
2014/04/28 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
审计班子对照检查材料
2014/08/27 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2015年领班工作总结
2015/04/29 职场文书
任命书格式模板
2015/09/22 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers