网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

    最近工作中element后台管理使用Echarts图表,在使用过程中也遇到了些问题,下面这篇文章主要给大家介绍了关于echart自适应宽度的两种方法,需要的朋友可以参考下

    1.一个页面多个图表的自适应宽度可以用

    注意:应写在多个图表的后面,不能一个一个写,会发生错误

    //根据窗口的大小变动图表
    window.onresize = function(){
        myChart.resize();
        myChart1.resize();    //若有多个图表变动,可多写
      
    }

    2.若是一个页面的多个图表需要分别监听改变宽度的话用(可以一个一个写)

    window.addEventListener("resize",function(){
         myChart.resize();
    });

    3.若是要自适应高度和宽度的话

    • 首先你的初始div 必须有初始的高度和宽度(因为echart绘制需要宽和高)

    • 需要写一个JavaScript方法去获取你当前div 的高度和宽度;

    • 然后通过监听事件去监听你当前高度和宽度的变化

    例如:

    // es5
    function fn(){//用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
        //var height=$("#divID").height()
        //或
        var height=document.getElementById("divID").offsetHeight
        var width=document.getElementById("divID").offsetWidth
    };
      fn ();//设置容器高宽
      //窗口大小发生了变化,代码:
    //方法1
    window.onresize = function () {//用于使chart自适的方法 
        fn ();//重置容器高宽
        myChart.resize();
    }
      //方法2
    window.addEventListener("resize",function(){   //监听
        fn ();//重置容器高宽
        myChart.resize();
    })

    附:echart多图表切换时图表宽度变成100px,而不是100%

    现页面中有如下图表需要显示

    现我希望页面在进行缩放的时候,图表大小也跟着变。首先想到的就是宽度设置为100%,但是当我在“总计”,“加分”,“扣分”之前切换时,发现图表宽度变成了100px(如果你设置的宽度是固定大小的,比如500px,那就不会有这个问题),这是echart本身的原因。那么如何解决图表自适应问题呢,现在有如下代码(只展示了主要的部分代码)

    <!--图表容器-->
    <div class="tab-pane active" id="total">
        <!-- 总计容器 -->
        <div id="total_chart" style="width: 100%;height:518px;"></div>
    </div>
    <div class="tab-pane" id="add">
        <!-- 加分容器 -->
        <div id="add_chart" style="width: 100%;height:518px;"></div>
    </div>
    <div class="tab-pane" id="deduction">
        <!-- 扣分容器 -->
        <div id="deduction_chart" style="width: 100%;height:518px;"></div>
    </div>
    <script>
        $.get('请求的url', function (response) {
                var total_id = "total_chart";
                var add_id = "add_chart";
                var deduction_id = "deduction_chart";
                // 总计表
                chart(total_id);
                // 加分表
                chart(add_id);
                // 扣分表
                chart(deduction_id);
            }, 'json')
        function chart(chart_id) {
            var myChart = echarts.init(document.getElementById(chart_id));
            var myOption;
            // 省略大部分代码
            // 使用制定的配置项和数据显示图表
            myChart.setOption(myOption);
            // 监听点击事件
            window.addEventListener("click", function () {
                myChart.resize();
            });
            // 监听浏览器页面缩放事件
            window.addEventListener("resize", function () {
                myChart.resize();
            });
        }
    </script>

    echart中的chart.resize()就可以实现,所以我们需要做的就是如何在页面进行缩放或者切换tab时,触发这个resize()操作呢?注意上面代码中的两个事件监听。

    第一个是监听点击操作。只要你切换页面中的“总计”,“加分”,“扣分”,那么就会触发myChart.resize(),这样图表的大小就会发生改变,因为我们设置width是100%,所以它就会根据当前图表容器来进行变化。

    第二个是页面缩放事件,道理和点击是一样的。建议两个都写,这样无论是你切换tab,还是页面缩放,图表大小都会跟着变化的。


    评论 0

    暂无评论
    0
    0
    0
    立即
    投稿
    发表
    评论
    返回
    顶部