解决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
Sep 14 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
Nov 30 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
jQuery学习总结之jQuery事件
Jun 30 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
JavaScript判断浏览器运行环境的详细方法
Jun 30 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 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的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
多个应用共存的Django配置方法
2018/05/30 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python如何安装第三方模块
2020/05/28 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
财务主管自我鉴定
2014/01/17 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
经典英文广告词
2014/03/18 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
协会周年庆活动方案
2014/08/26 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
幼师辞职信范文大全
2015/05/12 职场文书