vue监听dom大小改变案例


Posted in Javascript onJuly 29, 2020

需求描述:layout左边菜单栏收缩,右边的content区域的swiper宽度没有改变(没有图,朋友的问题,大体画一下)

vue监听dom大小改变案例

类似于点击折叠左边目录会变小,右边内容区域会变大,但是swiper在刚开始的时候就确定了宽度,所以我的想法是监听右边宽度大小去updata一下。但是我用vue的watch监听$refs.swiper.offsetwidth失败了!!!!但是宽度确实是在改变的很费解,先说一下解决方法把

1、使用element-resize-detector

var elementResizeDetectorMaker = require("element-resize-detector")
erd.listenTo(document.getElementById("swiper"), function(element) {
 var width = element.offsetWidth;
 var height = element.offsetHeight;
 console.log("Size: " + width + "x" + height);
});
//别为我为什么vue用getid。。我懒得改了。用ref获取dom也可以

2 、使用ResizeObserver

this.observer = new ResizeObserver(entries => {
   entries.forEach(() => {
    swiper.updata()
   })
  })
  let content = document.getElementById('swiper')
  this.observer.observe(content)

至于为什么watch不能兼听我的宽度的问题。。我感觉是只能监听被双向绑定的数据,也就是MVVM的数据,比如我们经常用watch监听data和$route。但还是不太确定希望有大佬帮我~~~

补充知识:vue 监听某个容器大小变化(饼状图适应容器大小变化)

需求

echarts图表 根据容器大小改变大小

主要应用了vue 监听 dom元素 尺寸的变化

element提供的 element-resize-detector 可以轻松解决问题的存在

安装依赖

npm install element-resize-detector

require 引入使用,需要用到的页面 ***.vue 引入

phontoImage(){   //渲染饼图调用的方法
       var echarts = require('echarts');
       var elementResizeDetectorMaker = require("element-resize-detector");//引入监听dom变化的组件
       var erd = elementResizeDetectorMaker();
       var worldMapContainer = document.getElementById('main4'); //获取 图标容器dom元素
        var that = this;
     //用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
     var resizeWorldMapContainer = function () {
       worldMapContainer.style.width = worldMapContainer.scrollWidth+'px';
       worldMapContainer.style.height = worldMapContainer.clientHeight+'px';
     };

     // 基于准备好的dom,初始化echarts实例
     var myChart = echarts.init(worldMapContainer);

        //var myChart = echarts.init(document.getElementById('main1'));
        myChart.on('click',function(params){

            that.open(params);

        });

        myChart.setOption({
          title:[
           {
             text: this.data4.name, //环形饼图中间部分的名称
             //subtext:rentalVal,
             textStyle:{  //中间部分字体样式
               fontSize:14,
               color:"black" 
             },
             subtextStyle: { // 中间下边一行字体样式
               fontSize:14,
               color: 'black'
             },
             textAlign:"center",
             x: '43%',   //字体在饼图中的位置
             y: '44%',
           }],
           tooltip : {
             trigger: 'item',
             formatter: "{a} <br/>{b} : {c} ({d}%)"
           },
           legend: {
             type: 'scroll',
             orient: 'vertical',
             right: 10,
             top: 20,
             bottom: 20,
             data: this.data4.names, 
           },
           series : [
             {
               name: this.data4.name,
               type: 'pie',
               radius : ['40%', '60%'], //设置一个区间 就是环形饼状图
               center: ['45%', '50%'],
               data:this.data4.values,
               itemStyle: {
                 emphasis: {
                   shadowBlur: 10,
                   shadowOffsetX: 0,
                   shadowColor: 'rgba(0, 0, 0, 0.5)'
                 },
                 normal:{
                   color:function(params) {
                   //自定义颜色
                   var colorList =['#7c277d','#7460ee', '#FC3468', '#1e88e5', '#ffb22b', '#fc4b6c', '#708069', '#26c6da','#fcc525', '#8d6658'];
                     return colorList[params.dataIndex]
                    }
                 }
               }
             }
           ]
        });
        erd.listenTo(worldMapContainer, function (element) { //执行监听 
          that.$nextTick(function () {
            myChart.resize(); //变化重新渲染饼图

   })
  })
      },

以上这篇vue监听dom大小改变案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
jQuery操作元素css样式的三种方法
Jun 04 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
jquery中键盘事件小结
Feb 24 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
May 10 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
uniapp电商小程序实现订单30分钟倒计时
Nov 01 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 #Javascript
详解JavaScript作用域 闭包
Jul 29 #Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 #Javascript
Vue 监听元素前后变化值实例
Jul 29 #Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 #Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 #Javascript
小程序实现列表展开收起效果
Jul 29 #Javascript
You might like
一个ftp类(ini.php)
2006/10/09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
Javascript 布尔型分析
2008/12/22 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Promise扫盲贴
2019/06/24 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
element中的$confirm的使用
2020/04/26 Javascript
python函数装饰器用法实例详解
2015/06/04 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
python如何操作mysql
2020/08/17 Python
活动策划邀请函
2014/02/06 职场文书
班主任评语大全
2014/04/26 职场文书
售后客服工作职责
2014/06/16 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
让子弹飞观后感
2015/06/11 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP