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 相关文章推荐
学习YUI.Ext 第二天
Mar 10 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
在百度知道团队中快速审批新成员的js脚本
Feb 02 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
JavaScript实现修改伪类样式
Nov 27 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
Feb 08 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
webpack5 联邦模块介绍详解
Jul 08 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
Antd的table组件表格的序号自增操作
Oct 27 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
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
python 排序算法总结及实例详解
2016/09/28 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python登录系统界面实现详解
2019/06/25 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python实现简单的tcp 文件下载
2020/09/16 Python
Python 操作 MySQL数据库
2020/09/18 Python
Django实现随机图形验证码的示例
2020/10/15 Python
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2015年党建工作总结
2015/03/30 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL