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 相关文章推荐
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
JS实现全屏预览F11功能的示例代码
Jul 23 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
Aug 27 Javascript
微信小程序模板template简单用法示例
Dec 04 Javascript
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
如何实现js拖拽效果及原理解析
May 08 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
js实现图片加载淡入淡出效果
2017/04/07 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
如何利用Python识别图片中的文字
2020/05/31 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android