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 相关文章推荐
onkeypress字符按键兼容所有浏览器使用介绍
Apr 24 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
Jan 22 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
springMVC结合AjaxForm上传文件
Jul 12 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
JavaScript 异步调用
Oct 25 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
一个php作的文本留言本的例子(一)
2006/10/09 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
常用PHP封装分页工具类
2017/01/14 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
es6数值的扩展方法
2019/03/11 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
python连接sql server乱码的解决方法
2013/01/28 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
用Python逐行分析文件方法
2019/01/28 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
python实现图片横向和纵向拼接
2020/03/05 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
接口可以包含哪些成员
2012/09/30 面试题
生物技术毕业生自荐信
2013/10/23 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
班干部竞选演讲稿
2014/04/24 职场文书