Vue中 echarts响应式页面变化resize()

这篇具有很好参考价值的文章主要介绍了Vue中 echarts响应式页面变化resize()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Vue项目中开发数据大屏,使用echarts图表根据不同尺寸的屏幕进行适配

BUG:当页面进行缩放时图表大小没有变化
Vue中 echarts响应式页面变化resize()

  • 使用到的方法:
    resize() 调用echarts中内置的resize函数进行自适应缩放,然后添加监控,页面销毁时删掉,避免不必要内存占用
  • 我们先看一下官方文档怎么说 resize 官网
    Vue中 echarts响应式页面变化resize()
    响应的原理:需要手动调用 resize 方法获取正确的高宽并且刷新画布
    亿点小知识:可以在opts 中显示指定图表高宽
  • 实战 vue3.0

1.创建容器

<div ref="myChart" style="width:100%;height:100%"></div>

2.创建echarts
先创建一个 echartsLine.ts 文件

import { EChartsOption } from "echarts";
const exportFuns = (): EChartsOption => {
  return {
	   xAxis: {
	    type: 'category',
	    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
	  },
	  yAxis: {
	    type: 'value'
	  },
	  series: [
	    {
	      data: [150, 230, 224, 218, 135, 147, 260],
	      type: 'line'
	    }
	  ]
   }
};
export const EchartsLineConsumption = exportFuns();

在容器组件里面应用echartsLine.ts 文件

<script lang="ts" setup>
import { ref, onMounted, markRaw } from "vue";
import * as echarts from "echarts";
import { EchartsLineConsumption } from "@/config/echartsLine";
const myChart = ref<any>(); // 获取元素实例
const line = ref<any>(null); // 获取echarts
onMounted(() => {
  init();
});
const init = ()=>{
  line.value = markRaw(echarts.init(myChart.value));
  line.value.setOption(EchartsLineConsumption);
}
</script>

3.进行响应式页面变化.resize()


onMounted(() => {
// 只要窗口大小发生像素变化就会触发
  window.addEventListener("resize", () => {
    line.value.resize(); // 窗口发生改变就更新echarts
  });
  init();
});

4.需要进行销毁实例优化性能

onUnmounted(() => {
  // 卸载echarts实例
  line.value.dispose();
  window.removeEventListener("resize", line.value);
});

以上就完成了 Vue中 echarts响应式页面变化


接下来总结了一下echarts的一些常用知识

  • 在饼图中间添加文字
    1.富文本 比较麻烦
    2.在series的label中
type: "pie",
radius: ["47%", "57%"], // 让饼图中间为空心状
label: {
          show: true,
          position: "center",
          formatter: "中间圆心内容",
          fontSize: '18px',
      },
  • 让图表占满容器
    使用grid属性
grid: {
     // 让图表占满容器
      left: 0,
      right: 0,
      bottom: 0,
      containLabel: true,
  },
  • 自定义移入样式
    marker属性
tooltip: {
      position: "top",
      show: true,
      formatter: (params) => {
        //只有“直接访问”使用大标签,其他都使用小标签
        return `$标题<br/>${params.marker}`;//marker 图标
      },
      // extraCssText:'width:60px;white-space:pre-wrap'
   },
  • legend显示和位置
    bottom和left调整位置
    circle::让前面显示的为圆形
    itemGap:显示之间的间距
legend: {
      orient: "horizontal",
      bottom: '5px', 
      left: "left",
      icon: "circle",
      itemGap: 2,
    },

Vue中 echarts响应式页面变化resize()
以上就是echarts响应式页面变化.resize()感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…文章来源地址https://www.toymoban.com/news/detail-482036.html

到了这里,关于Vue中 echarts响应式页面变化resize()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • echart自适应(适配),resize

    多图表自适应: 问题:隐藏侧边栏后,图表没有自适应容器; 解决办法: 1、把侧边栏隐藏的状态存起来,vuex或者其他地方,我这里存放到vuex中 2、在你需要自适应图表的页面或组件中,去监听vuex中的值,如果侧边栏的状态(隐藏或显示)改变,那么就重新渲染echarts图表

    2024年02月10日
    浏览(41)
  • 单个vue echarts页面

    template     div ref=\\\"history\\\" class=\\\"echarts\\\"/div /template script   export default{     data () {       return {};     },     methods: {       history(){       let myChart = this.$echarts.init(this.$refs.history);         // 绘制图表         myChart.setOption({             textStyle: {               color: \\\'#fff\\\'

    2024年02月07日
    浏览(60)
  • Vue:实现输入框/选择列表内容更改,页面实时预览多个内容变化

    在各种前端页面中,比如用户信息注册的页面,往往有多个输入框和多个选项列表。 为了避免用户选错或者输入错误,可以在前端页面上实时将多个输入框的内容拼接起来,显示到页面或者弹出的窗口中,帮助用户核对、检查输入的内容是否有错,提高用户体验。 本文介绍

    2024年02月10日
    浏览(44)
  • 【前端基础知识】Vue中的变量不是响应式的吗?属性赋值后视图不变化的原因是什么?

    Vue是一款在国内非常流行的框架,采用MVVM架构,它提供了一种响应式的数据双向绑定机制,使得开发者可以更方便地管理模型和视图。但是在Vue2中,由于使用了 Object.defineProperty 来追踪属性变化,但是它只能追踪已经存在的属性,无法追踪动态添加的属性,导致我们动态添加

    2024年02月01日
    浏览(38)
  • 记录vue3+echarts搭建数据可视化页面!

    提示:记录一下写页面的时候遇到过的一些小问题! 页面布局就是简单的用了个三栏式布局,在写页面的过程中对于多个页面共同使用的部分要注意善用组件复用,避免写冗余重复的代码! 比如说对于需要重复使用的图表容器,可以将其注册为全局组件V3Echarts.vue,当需要表

    2024年02月16日
    浏览(54)
  • vue echarts实现根据选择项年月时间切换数据显示柱状图,vue页面监听自适应

    echarts配置文档参考:Documentation - Apache ECharts 功能:可进行月度、年度切换显示相应的收入和支出柱状图数据; 这里进行了柱状图的简化配置,X轴Y轴都有所改写,具体的简化配置下文会贴出代码,参照功能开发时按照自己的需要去处理; 这里也会提到在开发时会遇到的问题

    2024年02月15日
    浏览(34)
  • 【Vue+Element-plus】记录后台首页多echart图静态页面

     Index.vue  DataComparison.vue DateTime.vue HealPatient.vue PeopleNumber.vur TrackPatients.vue VisitsNumber.vue

    2024年02月13日
    浏览(40)
  • vue3 reactive包裹数组无法页面无法响应式

    原代码如下: 此时removeItem方法运行,打印出historyAccount的值确实被改变了,但是页面还是没有变化 原因: 如果你直接通过赋值的方式改变 reactive 对象引用的数组,是不会触发视图的更新的,应该使用 Vue 提供的响应式方法来更新响应式数据。  改进:可以利用splice方法删除

    2024年04月09日
    浏览(46)
  • 响应式的 switchboard:让又大又慢的Vue/AIpine 页面爆快

    我的提示: AIpine 是一个js 库,官网口号是 “一个新的轻量极javascript框架”,其实我之前也没接触过,翻译这篇文章时才注意到 官方地址: [AIpine.js]https://alpinejs.dev 下面开始是译文: 小提示: 在这篇文章中我将使用Vue/AIpine 术语 ,但是我认为此模式可以应用于更多不同的语

    2024年02月01日
    浏览(23)
  • 解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题?

    我们需要在vue3中使用服务器的数据渲染到页面上,我使用的是reactive生成的响应式数据属性,但是在挂载后请求的数据并没有渲染显示到页面上。 技术: vue3 、 element-ui-plus home.vue 我们通过直接赋值,可以看出数据变为普通的数据了,并不是响应式的。 代码如下: 可以看出

    2023年04月26日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包