解决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使用手册之 事件处理
Mar 24 Javascript
JS中toFixed()方法引起的问题如何解决
Nov 20 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
js实现汉字排序的方法
Jul 23 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
JS前端使用canvas实现物体的点选示例
Aug 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
星际中的相关伤害
2020/03/04 星际争霸
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Python Deque 模块使用详解
2014/07/04 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python requests模块实例用法
2019/02/11 Python
使用python绘制温度变化雷达图
2019/10/18 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
电气自动化个人求职信范文
2014/02/03 职场文书
食品销售计划书
2014/04/26 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL