解决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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
javascript 图片上传预览-兼容标准
Jun 01 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
理解Javascript_11_constructor实现原理
Oct 18 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
vue按需引入element Transfer 穿梭框
Sep 30 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
vue实现前端列表多条件筛选
Oct 26 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作的文本留言本的例子(五)
2006/10/09 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP四大安全策略
2014/03/12 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
python如何安装下载后的模块
2020/07/03 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
金山毒霸系列的笔试题
2013/04/13 面试题
简历中自我评价范文3则
2013/12/14 职场文书
大学生村官工作感言
2014/01/10 职场文书
Golang并发工具Singleflight
2022/05/06 Golang
Go语言入门exec的基本使用
2022/05/20 Golang