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加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
JavaScript实现的SHA-1加密算法完整实例
Feb 02 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
js阻止移动端页面滚动的两种方法
Jan 25 Javascript
js实现九宫格的随机颜色跳转
Feb 19 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
Feb 09 Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
Jul 12 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 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/10/09 PHP
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
php文件操作相关类实例
2015/06/18 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
JavaScript 事件系统
2010/07/22 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python中使用序列的方法
2015/08/03 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python3中的md5加密实例
2018/05/29 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
个人委托书怎么写
2014/04/04 职场文书
公益广告标语
2014/06/19 职场文书
检讨书1000字
2014/10/11 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
MySQL数据库之存储过程 procedure
2022/06/16 MySQL