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 相关文章推荐
JavaScript修改css样式style
Apr 15 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
封装了一个js图片轮换效果的函数
Sep 28 Javascript
jQuery :first选择器使用介绍
Aug 09 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
浅谈JavaScript正则表达式-非捕获性分组
Mar 08 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
微信小程序实现列表下拉刷新上拉加载
Jul 29 Javascript
JavaScript cookie原理及使用实例
May 08 Javascript
解决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
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
详解vue v-model
2020/08/31 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
工业设计毕业生自荐信
2014/04/13 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
幼儿教师个人总结
2015/02/05 职场文书
公司财务部岗位职责
2015/04/14 职场文书
小学见习报告
2015/06/23 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
Python中itertools库的四个函数介绍
2022/04/06 Python