VUE3中echarts图表做成响应 echarts实现响应式布局

  • 单个图表
    
         
         
    1. //获取dom节点
    2. var myChart = echarts. init( document. getElementById( 'main'));
    3. //渲染dom
    4. myChart. setOption({...})
    5. // 响应式
    6. window. onresize = function( ) {
    7. myChart. resize();
    8. }

    注意:这种方法只能对一个图表有用,如果一个页面当中同时存在多个图表的话,只会对最后一个图表生效。而我们在vue中使用的时候往往会有多个图表,虽然我们把不同的图表分为多个组件,但是还是只能对一个图表生效。所以最有效的方法就是挂载在全局。

  • 多个图表(通用方法)

        在全局挂载:


   
   
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router/index'
  4. //引入element-ui
  5. import ElementPlus from 'element-plus'
  6. import 'element-plus/dist/index.css'
  7. const app = createApp( App)
  8. app. use( ElementPlus)
  9. app. use(router)
  10. app. mount( '#app')
  11. //方法--全局挂载
  12. app. config. globalProperties. $echartsResize = function( ref:any){
  13. window. addEventListener( 'resize', function ( ) {
  14. ref. resize()
  15. })
  16. }
  17. //属性--全局挂载
  18. app. config. globalProperties. $axios = Axios;
  19. app. config. globalProperties. $Test = "我在全局";

在组件中使用:

        在组件实例中需要从vue中引入getCurrentInstance ,再通过 getCurrentInstance 获取proxy,进而可以获取全局挂载的实例进行使用。


   
   
  1. <script setup>
  2. import { onMounted } from 'vue';
  3. import * as echarts from 'echarts';
  4. //引入getCurrentInstance
  5. import { getCurrentInstance } from 'vue'
  6. const { proxy } = getCurrentInstance();
  7. const echartInit = ( data) => {
  8. // 基于准备好的dom,初始化echarts实例
  9. var myChart = echarts. init( document. getElementById( 'main'));
  10. // 绘制图表
  11. myChart. setOption({...});
  12. // 响应式--使用
  13. proxy.$echartsResize(myChart)
  14. }
  15. onMounted( async () => {
  16. echartInit()
  17. })
  18. </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue2,使用Echarts实现响应式布局可以通过以下步骤进行操作。 1. 首先,需要手动调用Echarts实例的resize方法来解决页面尺寸变化时图表重新渲染排布的问题。可以在组件的mounted生命周期钩子绑定resize事件处理函数,代码如下: ```javascript resize() { this.chart.resize(); } mounted() { window.addEventListener("resize", this.resize); } ``` 2. 其次,可以通过设置组件或系列的orient或layout配置项为'horizontal'或'vertical'来实现横纵向布局的设置。这可以在组件或系列的配置进行设置,示例代码如下: ```javascript { // 组件或系列的其他配置项 orient: "horizontal", // 或者 "vertical" // 其他配置项 } ``` 3. 此外,还可以使用Media Query来设置响应式布局。可以根据页面的尺寸或其它条件,动态调整图表的配置。下面是一个具体的例子,示例代码如下: ```javascript { baseOption: { // 基础配置项 legend: { // 图例配置项 orient: "horizontal", // 其他配置项 }, series: [ { // 系列配置项 center: ["50%", "56%"], // 其他配置项 } ] }, media: [ { query: { minAspectRatio: 1, minWidth: 400 }, option: { legend: { orient: "vertical" }, series: [ { center: ["50%", "50%"] } ] } } ] } ``` 通过上述步骤和配置,可以实现Vue2Echarts响应式布局。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [在 VUE 项目,设置 echarts 图表响应式布局](https://blog.csdn.net/qq_36291747/article/details/106992514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值