在 Vue 中实现 Echarts 随窗体变化


本文摘自PHP中文网,作者Guanhui,侵删。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

<p id="myChart" :style="{width: '100%', height: '345px'}"></p>

<script> export default {

mounted(){

    this.drawLine();

  },

  methods: {

    drawLine(){

    var myChartContainer = document.getElementById('myChart');      //用于使chart自适应宽度,通过窗体宽计算容器高宽

    var resizeMyChartContainer = function(){

     myChartContainer.style.width=(document.body.clientWidth-75)+'px'

    }     //设置容器高宽

    resizeMyChartContainer()

    // 基于准备好的dom,初始化echarts实例

    var myChart = this.$echarts.init(myChartContainer)

      

    // 绘制图表

    myChart.setOption({

      title: { text: '启动次数' },

      tooltip: {},

      xAxis: {

        type: 'category',

        data: ['2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19', '2019-02-20', '2019-02-21']

      },

      yAxis: {

         type:'value'

      },

      series: [{

        type: 'line',

        data: [0,0, 0, 7, 0, 0,12],

        smooth:true,

        symbol: 'circle',

        symbolSize: 6,

        itemStyle:{

          normal:{

              

            color:'#fc8a0f',

            lineStyle:{

              color:'#ff9c35'

                }

              }

            }

      }],

    });

    window.onresize=function(){

     resizeMyChartContainer();

      myChart.resize();

    }

   }

  }}</script>

补充知识:echarts 图表大小随窗口变动而自适应变动(无需刷新浏览器调整)

问题提出:

使用echars做完图表之后,需要根据浏览器窗口的缩放做自适应效果。

原因分析及解决方案:

echars的图标实例事实上并没有主动的去绑定resize()事件,就是说显示区域的大小改变内部并不知道,当你需要去做一些自适应的效果的时候,需要主动绑定这个时间才能达到自使用的效果,常见的如window.onresize = myChart.resize()

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

var map5 = echarts.init(document.getElementById('map5'));

  var option5 = {

    backgroundColor: '#def1f9',

    color: ['#c23531', '#1875ff'],

    title: {

      left: 10,

      top: 10,

      text: 'Bill charts for the past year'

    },

    // color: ['#1875ff', '#1fe6ab', '#eee119', '#ff3074', '#6f99d9'],

    legend: {

      top: 30,

      right: 30

    },

    tooltip: {},

  

    xAxis: {type: 'category'},

    yAxis: {},

    series: [

      {type: 'bar'},

      {type: 'bar'}

    ]

  }

  map5.setOption(option5);

  

  window.onresize = function () {

    setTimeout(function () {

      map1.resize()

      map2.resize()

      map3.resize()

      map4.resize()

      map5.resize()

    },10)

  }

重点:

1

2

3

window.onresize = function () {

   map1.resize() ; // 如果有多个图标变动,可写多个

}

推荐教程:《JS教程》

以上就是在 Vue 中实现 Echarts 随窗体变化的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

vue怎么调用jquery包

vue自定义指令

vue.use是什么

vue中怎么导出excel文件?

vue+webpack2实现路由懒加载的方法介绍

vue-loader是什么?

node+vue怎么实现简单的websocket聊天功能?(代码示例)

vue组件中如何引入css文件

vue怎么用react组件

vue项目中关闭eslint校验的方法介绍

更多相关阅读请进入《vue》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...