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实现id模糊查询的小例子
Mar 19 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
JavaScript实现点击按钮直接打印
Jan 06 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
js跨域资源共享 基础篇
Jul 02 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
Apr 14 Javascript
vue-cli3全面配置详解
Nov 14 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 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类
2006/07/15 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
PHP运行模式的深入理解
2013/06/03 PHP
thinkphp缓存技术详解
2014/12/09 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
js不是基础的基础
2006/12/24 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
python中time包实例详解
2021/02/02 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
乡镇庆八一活动方案
2014/02/02 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
教研活动主持词
2015/07/03 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript