解决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 相关文章推荐
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
多浏览器支持的右下角浮动窗口
Apr 01 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
简单实现js页面切换功能
Jan 10 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
Sep 22 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
Node.js引入UIBootstrap的方法示例
May 11 Javascript
微信小程序实现发红包功能
Jul 11 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 归并排序 数组交集
2011/05/10 PHP
PHP 图片水印类代码
2012/08/27 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
python时间日期操作方法实例小结
2020/02/06 Python
Python callable内置函数原理解析
2020/03/05 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
优秀纪检干部材料
2014/08/27 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
博士导师推荐信
2015/03/25 职场文书
建党伟业电影观后感
2015/06/01 职场文书
严以用权学习心得体会
2016/01/12 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书