echarts图使用tab和下拉切换

方法一:用tab建切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="echarts.js"></script>
    <style>
        .btns input{
            width:100px;
            height: 40px;
            background-color: #ddd;
            border: 0;
        }
        .btns .current{
            background-color: gold;
        }

        .cons .active{
            display: block;
        }
        .tab1{
            width: 500px;
            height: 300px;
        }
 
        .none {
            display: none;
        }
    </style>
    <script>
        $(function () {
            var $btn = $('.btns input');
            var $div = $('.cons div');
            $btn.click(function () {
                $(this).addClass('current').siblings().removeClass('current');
                $('.cons .item').eq($(this).index()).addClass('active').siblings('.item').removeClass('active');
            })
        })

    </script>
</head>
<body>
    <div class="btns">
        <input type="button" name="" value="01" class="current">
        <input type="button" name="" value="02">
        <input type="button" name="" value="03">
    </div>
    <div class="cons">
        <div  class="clearfloat item none active">
            <div id="tab1" class="tab1"></div>
        </div>
        <div class="clearfloat item none">
            <div id="tab2" class="tab1"></div>
        </div>
        <div class="clearfloat item none">
            <div id="tab3" class="tab1"></div>
        </div>
    </div>
<script type="text/javascript">
    (function () {
        var myChart1 = echarts.init(document.getElementById('tab1'));

        var option1 = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'

            },
            series: [{
                data: [2,2.5 , 3.3, 4.5, 6.3, 10.2, 20.3],
                type: 'line'
            }]
            };

        // 为echarts对象加载数据
        myChart1.setOption(option1);
        var myChart2 = echarts.init(document.getElementById('tab2'));

        var option2 = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: [120, 200, 150, 80, 70, 110, 130],
                type: 'bar'
            }]
        };
        myChart2.setOption(option2);
        var myChart3 = echarts.init(document.getElementById('tab3'));

        var option3 = {
            title : {
                text: '某站点用户访问来源',
                subtext: '纯属虚构',
                x:'center'
            },
            tooltip : {
                trigger: 'item',
                formatter: "{a} <br/>{b} : {c} ({d}%)"
            },
            legend: {
                orient: 'vertical',
                left: 'left',
                data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
            },
            series : [
                {
                    name: '访问来源',
                    type: 'pie',
                    radius : '55%',
                    center: ['50%', '60%'],
                    data:[
                        {value:335, name:'直接访问'},
                        {value:310, name:'邮件营销'},
                        {value:234, name:'联盟广告'},
                        {value:135, name:'视频广告'},
                        {value:1548, name:'搜索引擎'}
                    ],
                    itemStyle: {
                        emphasis: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                }
            ]};
        myChart3.setOption(option3);
    })()
</script>
</body>
</html>

效果:

                     在这里插入图片描述

 

方法二:利用下拉列表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导航条</title>
	<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="echarts.js" type="text/javascript" ></script>
    <script>
      $(function(){
          var li = $('#tabs');
          var cc=$('#tabs option');
          var len=cc.length;
          li.change(function(){
              var t = parseInt(li.get(0).selectedIndex);
              for(var i= 0;i<len;i++){
                  if(t==i){
                      $('#chanpin'+t).show();
                   }else{
                     $('#chanpin'+i).hide();
                   }
                }
          });
      });
    </script>
    <style>
        .selector{
            margin: 17px 15px 0 0 ;
            float: right;
        }
        #content .active{
            display: block;
        }
        .chart{
            width: 400px;
            height: 300px;
        }
        .none {
            display: none;
        }
    </style>
</head>
<body>
     <select name="status" id="tabs" class="selector">
         <!--<option>ALL</option>-->
         <option>表1</option>
        <option>表2</option>
        <option>表3</option>
    </select>
    <div id="content">
        <div id ="chanpin0" class="none active">
            <div id ="main1" class="chart" ></div>
            <!--我们是共产主义接班人!!-->
        </div>

        <div id ="chanpin1" class="none">
          <div id ="main2" class="chart" ></div>
        </div>

        <div id ="chanpin2" class="none">
          <div id ="main3" class="chart" ></div>
        </div>

    </div>



<script type="text/javascript">
    (function () {
        var myChart1 = echarts.init(document.getElementById('main1'));
        var option1 = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'

            },
            series: [{
                data: [2,2.5 , 3.3, 4.5, 6.3, 10.2, 20.3],
                type: 'line'
            }]
            };

        // 为echarts对象加载数据
        myChart1.setOption(option1);
        var myChart2 = echarts.init(document.getElementById('main2'));
        var option2 = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: [120, 200, 150, 80, 70, 110, 130],
                type: 'bar'
            }]
        };
        myChart2.setOption(option2);
        var myChart3 = echarts.init(document.getElementById('main3'));
        var option3 = {
            title : {
                text: '某站点用户访问来源',
                subtext: '纯属虚构',
                x:'center'
            },
            tooltip : {
                trigger: 'item',
                formatter: "{a} <br/>{b} : {c} ({d}%)"
            },
            legend: {
                orient: 'vertical',
                left: 'left',
                data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
            },
            series : [
                {
                    name: '访问来源',
                    type: 'pie',
                    radius : '55%',
                    center: ['50%', '60%'],
                    data:[
                        {value:335, name:'直接访问'},
                        {value:310, name:'邮件营销'},
                        {value:234, name:'联盟广告'},
                        {value:135, name:'视频广告'},
                        {value:1548, name:'搜索引擎'}
                    ],
                    itemStyle: {
                        emphasis: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                }
            ]};
        myChart3.setOption(option3);
    })()
</script>
</body>
</html>

效果图:

参考自https://blog.csdn.net/luoyangxa/article/details/83510501

当在切换时有的时候第二图不会正常显示,是因为echarts不能识别到你设置的百分比宽度

解决方案一:设置成固定宽度

解决方案二:https://www.zhihu.com/question/42895113

(还没有试) 

解决方案三:

在html文件加载时就给main1,main2,main3设置宽度为父div的宽度(也可以增减30左右的像素)

 

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 ECharts(百度开源的数据可视化库)来实现 tab 切换效果。以下是一个示例代码: 首先,在 HTML 文件中引入 ECharts 的库文件和所需的样式文件: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.css" /> ``` 然后,在 HTML 文件中创建一个包含 tab 切换的容器: ```html <div id="tabContainer"> <div class="tab" onclick="switchTab(0)">Tab 1</div> <div class="tab" onclick="switchTab(1)">Tab 2</div> <div class="tab" onclick="switchTab(2)">Tab 3</div> </div> <div id="chartContainer"></div> ``` 接下来,编写 JavaScript 代码实现 tab 切换功能: ```javascript // 定义各个 tab 对应的数据 var chartData = [ // Tab 1 的数据 { // 在这里配置你的表选项和数据 // 示例:series: [{ type: 'bar', data: [1, 2, 3] }] }, // Tab 2 的数据 { // 在这里配置你的表选项和数据 }, // Tab 3 的数据 { // 在这里配置你的表选项和数据 } ]; var currentIndex = 0; // 当前显示的 tab function switchTab(index) { currentIndex = index; renderChart(); } function renderChart() { var container = document.getElementById('chartContainer'); container.innerHTML = ''; // 清空容器 // 创建 ECharts 实例 var myChart = echarts.init(container); // 根据当前 tab 的索引获取对应的数据 var data = chartData[currentIndex]; // 使用数据渲染表 myChart.setOption(data); // 自适应窗口大小变化 window.addEventListener('resize', function () { myChart.resize(); }); } // 初始化时渲染第一个 tab表 renderChart(); ``` 上述代码中,我们通过点击不同的 tab切换 currentIndex 的值,并调用 renderChart() 函数重新渲染表。每个 tab 对应的数据存储在 chartData 数组中,根据 currentIndex 的值获取对应的数据,然后使用 ECharts 的 setOption() 方法渲染表。 请注意替换示例代码中的表选项和数据,以适应你自己的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值