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车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
Dec 23 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
js只执行1次的函数示例
Jul 20 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
jQuery中的select操作详解
Nov 29 Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
react+redux的升级版todoList的实现
Dec 18 Javascript
JS 实现分页打印功能
May 16 Javascript
javascript事件循环event loop的简单模型解释与应用分析
Mar 14 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 MySQL与分页效率
2008/06/04 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
为python设置socket代理的方法
2015/01/14 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
python统计中文字符数量的两种方法
2019/01/31 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
《梅兰芳学艺》教学反思
2014/02/24 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
大学生毕业评语
2014/12/31 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
销售开票员岗位职责
2015/04/15 职场文书
五年级作文之成长
2019/09/16 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Ruby处理YAML和json数据
2022/04/18 Ruby