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 相关文章推荐
html下载本地
Jun 19 Javascript
jquery.validate使用攻略 第一部
Jul 01 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
Oct 18 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
canvas绘制环形进度条
Feb 23 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
Vue.js实现的购物车功能详解
Jan 27 Javascript
JS求1到任意数之间的所有质数的方法详解
May 20 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
js 上传图片预览问题
2010/12/06 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
python中remove函数的踩坑记录
2021/01/04 Python
物流专业毕业生推荐信范文
2013/11/18 职场文书
销售部主管岗位职责
2013/12/18 职场文书
大学老师推荐信
2014/02/25 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
陈欧的广告词
2014/03/18 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang