Vue检测屏幕变化来改变不同的charts样式实例


Posted in Javascript onOctober 26, 2020

css中我们经常会通过媒体查询就可以完成对不同的屏幕展现不同的样式

在js中我们也可以通过检测屏幕的变化来展现不同的样式

在我的实例中:因为第一次打开也不知道到底是应该展示哪一个屏幕,所以会进行先判断一次,之后用addEventListener来是实现功能,暂时是通过这种方式实现的,以后有更好的方法再更新。。。

mounted() {
  this.checkScreen()
 },
methods: {
 // 屏幕检测变化
  checkScreen() {
   var _this = this
   if (document.body.clientWidth > 500) {
     _this.echartsOne()
   } else {
     _this.echartsTwoPhone()
   }
   window.addEventListener('resize', () => {
     if (document.body.clientWidth < 500) {
      _this.echartsTwoPhone()
     } else {
      _this.echartsOne()
     }
   })
  }
}

补充知识:vue中处理echarts因v-if切换后图形显示异常+实现echarts监听窗口变化而改变大小

一、处理echarts因v-if切换后图形显示异常

有时候我们需要在一个页面中使用v-if来显示不同的两个图表。

视觉效果上好像是从一个页面点击链接跳转到另一个页面,但其实原理是通过销毁和重建两个不同dom容器来实现这个效果。

可能会出现的问题:

在切换到另一个图表显示的时候,改变了窗口宽度高度,那么点击返回按钮时看到原先的echarts图形就会有一部分消失显示不完整了。

解决办法:

我们需要在返回这个按钮上加个定时器延迟,来主动触发窗口发生变化(前提是代码也有做监听窗口变化改变图形大小的操作,下面标题二会讲解)。这样图形能正确自动渲染变化一次。

methods: {
 // 关闭监控ip执行详情页
  closePerfExe () {   
   this.isShowPerfExe = false // 控制当前dom容器的显示
   // 当在监控ip详情页点击回性能分析页的时候,加个延迟主动触发窗口变化,这样窗口改变性能分析页就不会发生图表显示不完整的情况了
   // 这里的代码是关键!!!
   setTimeout( () => {
    let triggerResize = new Event('resize')
    window.dispatchEvent(triggerResize)
   },0)
  }
}

二、vue实现echarts监听窗口变化而改变大小

监听窗口的变化,echarts图形大小跟着变化。

注意:在组件销毁时记得也要移除监听。

data () {
 return {
 myChartPerformance: '', // echarts的dom容器
 performanceOption: '' // echarts配置项option
 } 
 },
 mounted () {
  // 一般我为了防止出现一些切换问题,都是先清除echarts再初始化
    if(this.myChartPerformance){
     this.myChartPerformance.clear()
    }
    this.myChartPerformance = echarts.init(document.getElementById('myChartPerformance'))

  // 图表数据配置
    this.performanceOption = {
    title: {
     text: chartOptions.titleName
    },
    tooltip: {
     trigger: 'axis'
    },
    //.........
    //.........
   }
   // 设置图表数据配置
   this.myChartPerformance.setOption(this.performanceOption)
  // 监听窗口大小改变图表大小(先移除再监听,防止出错)
   window.removeEventListener('resize', this.resizePerformanceFun)
   window.addEventListener('resize', this.resizePerformanceFun)
 },
 beforeDestroy () {
  // 组件销毁前移除监听
 window.removeEventListener('resize', this.resizePerformanceFun)
 },
 methods : {
 resizePerformanceFun () {
    if(this.myChartPerformance){
    // console.log('窗口改变了,重新渲染图形')
    this.myChartPerformance.resize()
   }
  }
}

以上这篇Vue检测屏幕变化来改变不同的charts样式实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
纯Javascript实现Windows 8 Metro风格实现
Oct 15 Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
js实现支持手机滑动切换的轮播图片效果实例
Apr 29 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
浅析Ajax语法
Dec 05 Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
Angular中的interceptors拦截器
Jun 25 Javascript
vue二级路由设置方法
Feb 09 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
解决ant design vue中树形控件defaultExpandAll设置无效的问题
Oct 26 #Javascript
vue下载二进制流图片操作
Oct 26 #Javascript
JavaScript如何操作css
Oct 24 #Javascript
javascript实现多边形碰撞检测
Oct 24 #Javascript
解决vue scoped html样式无效的问题
Oct 24 #Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 #Javascript
Ant Design的Table组件去除
Oct 24 #Javascript
You might like
php导出中文内容excel文件类实例
2015/07/06 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP多维数组排序array详解
2017/11/21 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
Vue项目安装插件并保存
2019/01/28 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
用python制作游戏外挂
2018/01/04 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
酒店开业庆典主持词
2014/03/21 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
同志主要表现材料
2014/08/21 职场文书
上党课的心得体会
2014/09/02 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
画展邀请函
2015/01/31 职场文书
聚会通知怎么写
2015/04/23 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
庭外和解协议书
2016/03/23 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
详解MySQL集群搭建
2021/05/26 MySQL
详解Go与PHP的语法对比
2021/05/29 PHP