E-charts之一个与页面多个图表并且自适应的方案

来源:互联网 发布:centos挂载硬盘分区 编辑:程序博客网 时间:2024/06/16 20:10

1.开始题主是使用了,flex布局发现是和echarts是不兼容的.会吧其他的几个表格都挤出去

2.后来调整了一下布局,并使用了官方推荐的.window.resize方法实现图表实时更新大小

3.废话不多说我还是直接上我的代码

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script src="../public/resources/js/echarts.min.js"></script>    <style>        body{font-family:"Microsoft YaHei";font-size: 14px;;background: #eee}        *{padding: 0;margin: 0}        li{list-style: none}        a{text-decoration: none;}        table{width:100%;text-align:center;border-collapse:collapse;border-spacing:0; }        table td{word-break: break-all; word-wrap:break-word}        ul{display: flex;width: 100%}        li{flex:1;height: 200px;border: 1px solid red;margin-right: 10px;}       .memberData{width: 1200px; margin: 0 auto;}       .e-chart-style{width: 100%;height: 200px;}       .e-chart{position: relative;height: auto;  width: 265.5px;margin-right: 22px;float: left;background: #fff;padding-left: 18px;}       .newaddmember_t{winth:100%;line-height: 30px;height: 30px;color: #666;font-size: 12px;padding-right:18px;}        .newaddmember_t .underline{;border-bottom: 1px solid #eee;}       /*我的*/        /*随访次数的定位*/       .suifangtimes{position: absolute;top:76px;right:8%;}        .suifangtimes p{color:#999;line-height: 22px;font-size: 12px;height: 22px;}        @media (max-width: 1200px){            .memberData{width: 100%}            .e-chart{width: 100%}        }    </style></head><body><div class="memberData">    <div class="e-chart">        <div class="newaddmember_t">            <div class="underline">新增会员 :</div>        </div>        <div class="e-chart-style" id="mychart1">        </div>    </div>    <div class="e-chart">        <div class="newaddmember_t">            <div class="underline">随访次数 :</div>        </div>        <div class="suifangtimes">            <p>30</p>            <p>10</p>            <p>15</p>            <p>20</p>            <p>25</p>        </div>        <div class="e-chart-style" id="myChart2">        </div>    </div>    <div class="e-chart">        <div class="newaddmember_t">            <div class="underline">总消费 :</div>        </div>        <div class="e-chart-style" id="myChart3">        </div>    </div>    <div class="e-chart" style="margin-right: 0px;">        <div class="newaddmember_t">            <div class="underline">客单价 :</div>        </div>        <div class="e-chart-style" id="myChart4">        </div>    </div></div><script>/*新增会员*/var myChart1 = echarts.init(document.getElementById('mychart1'));// 指定图表的配置项和数据var option1 = {    tooltip : {  //提示框        trigger: 'axis',  //触发类型(坐标轴触发)        alwaysShowContent:false,  //是否永远显示提示框的内容        backgroundColor:'rgba(32,174,252,0.7)', //提示框的背景颜色        textStyle:{  //提示框浮层的文本样式        },    },    calculable : true,    xAxis : [        {            type : 'category',            name:'()',        //X轴名称单位            nameLocation:'end', //名称的位置            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:0,  //名称与X轴的距离            boundaryGap: true,//坐标的刻度是否在中间            min:'3',//坐标轴刻度最小值            max:'dataMax', //坐标轴刻度的最大值            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisTick:{ //坐标轴刻度相关设置                length:'0' //我把长度设置成0            },            axisLabel:{ //坐标轴刻度标签                margin:7, //刻度标签与轴线之间的距离                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                }            },            data : ['3','4','5','6','7','8','9','10']        }    ],//X轴设置    yAxis : [        {            type : 'value', //类型数值轴            name:'()',    //坐标轴名称            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:3,  //名称与Y轴的距离            axisTick:{ //坐标轴刻度相关设置                length:'0' //我设置成0            },            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisLabel:{//坐标轴标签相关设置,距离颜色等                margin:7,                //formatter: '{value} °C',//标签内容内置的格式转化器比如这个表示在后面加一个c                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                },            },            splitLine:{    //坐标轴分隔线。默认数值轴显示,类目轴不显示。                show:false            }        }    ],    grid:{ //直角坐标系内绘图网格        left:36  //由于1000显示被挡住了,所以我让他左移36px;这个功能类似于paddingleft    },    series : [  //系列列表        {            name:'',   //系列名称 用于tooltip的显示            type:'line',            data:[360, 500, 400, 600, 530, 840, 540,350],            itemStyle:{  //折线拐点的样式                normal:{                    color:'#20aefc',  //折线拐点的颜色                }            },            lineStyle:{  //线条的样式                normal:{                    color:'#20aefc',  //折线颜色                }            },            areaStyle:{ //区域填充样式                normal:{                    //线性渐变                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{                        offset: 0, color: '#b1e3fe' // 0% 处的颜色                    }, {                        offset: 1, color: '#fff' // 100% 处的颜色                    }], false)                }            },            markPoint : { //图标标注                data : [                    {type : 'max', name: '最大值'},                    {type : 'min', name: '最小值'}                ]            },            markLine : {                data : [                    {type : 'average', name: '平均值'}                ]            }        }    ]};// 使用刚指定的配置项和数据显示图表。myChart1.setOption(option1);/*随访次数*/var myChart2 = echarts.init(document.getElementById('myChart2'));var option2 = {    tooltip : { //提示框组件        trigger: 'item', //触发类型(饼状图片就是用这个)        formatter: "{a} <br/>{b} : {c} ({d}%)" //提示框浮层内容格式器    },    color:['#48cda6','#fd87ab','#11abff','#ffdf33','#968ade'],  //手动设置每个图例的颜色    legend: {  //图例组件        //right:100,  //图例组件离右边的距离        orient : 'horizontal',  //布局  纵向布局 图例标记居文字的左边 vertical则反之        width:40,      //图行例组件的宽度,默认自适应        right:'20%',        //图例显示在右边  设置数字就是离左边多远        y: 'center',   //图例在垂直方向上面显示居中        itemWidth:10,  //图例标记的图形宽度        itemHeight:10, //图例标记的图形高度        data:[            {name: '30%', icon: 'circle',},  // 强制设置图形为圆。            {name: '10%', icon: 'circle',},            {name: '15%', icon: 'circle',},            {name: '20%', icon: 'circle',},            {name: '25%', icon: 'circle',}        ],        textStyle:{    //图例文字的样式            color:'#333',  //文字颜色            fontSize:12    //文字大小        }    },    series : [ //系列列表        {            name:'随访次数',  //系列名称            type:'pie',   //类型 pie表示饼图            center:['30%','50%'], //设置饼的原心坐标 不设置就会默认在中心的位置            radius : ['40%', '60%'],  //饼图的半径,第一项是内半径,第二项是外半径,内半径为0就是真的饼,不是环形            itemStyle : {  //图形样式                normal : { //normal 是图形在默认状态下的样式;emphasis 是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时。                    label : {  //饼图图形上的文本标签                        show : false  //平常不显示                    },                    labelLine : {     //标签的视觉引导线样式                        show : false  //平常不显示                    }                },                emphasis : {   //normal 是图形在默认状态下的样式;emphasis 是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时。                    label : {  //饼图图形上的文本标签                        show : true,                        position : 'center',                        textStyle : {                            fontSize : '10',                            fontWeight : 'bold'                        }                    }                }            },            data:[                {value:30, name:'30%'},                {value:10, name:'10%'},                {value:15, name:'15%'},                {value:20, name:'20%'},                {value:25, name:'25%'}            ]        }    ]}myChart2.setOption(option2);/*总消费*/var myChart3 = echarts.init(document.getElementById('myChart3'));var option3 = {    tooltip : {  //提示框        trigger: 'axis',  //触发类型(坐标轴触发)        alwaysShowContent:false,  //是否永远显示提示框的内容        backgroundColor:'rgba(32,174,252,0.7)', //提示框的背景颜色        textStyle:{  //提示框浮层的文本样式        },    },    calculable : true,    xAxis : [        {            type : 'category',            name:'()',        //X轴名称单位            nameLocation:'end', //名称的位置            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:0,  //名称与X轴的距离            boundaryGap: true,//坐标的刻度是否在中间            min:'3',//坐标轴刻度最小值            max:'dataMax', //坐标轴刻度的最大值            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisTick:{ //坐标轴刻度相关设置                length:'0' //我设置成0            },            axisLabel:{                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                }            },            data : ['3','4','5','6','7','8','9','10']        }    ],//X轴设置    yAxis : [        {            type : 'value', //类型数值轴            name:'()',    //坐标轴名称            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:3,  //名称与Y轴的距离            axisTick:{ //坐标轴刻度相关设置                length:'0' //我设置成0            },            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisLabel:{                //formatter: '{value} °C',//标签内容内置的格式转化器比如这个表示在后面加一个c                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                }            },            splitLine:{    //坐标轴分隔线。默认数值轴显示,类目轴不显示。                show:false            }        }    ],    grid:{ //直角坐标系内绘图网格        left:36  //由于1000显示被挡住了,所以我让他左移36px;这个功能类似于paddingleft    },    series : [  //系列列表        {            name:'',   //系列名称 用于tooltip的显示            type:'line',            data:[360, 500, 400, 600, 530, 840, 540,350],            itemStyle:{  //折线拐点的样式                normal:{                    color:'#fe739d',  //折线拐点的颜色                }            },            lineStyle:{  //线条的样式                normal:{                    color:'#fe739d',  //折线颜色                }            },            areaStyle:{ //区域填充样式                normal:{                    //线性渐变                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{                        offset: 0, color: '#ffbacf' // 0% 处的颜色                    }, {                        offset: 1, color: '#ffffff' // 100% 处的颜色                    }], false)                }            },            markPoint : {                data : [                    {type : 'max', name: '最大值'},                    {type : 'min', name: '最小值'}                ]            },            markLine : {                data : [                    {type : 'average', name: '平均值'}                ]            }        }    ]};myChart3.setOption(option3);/*客单价*/var myChart4 = echarts.init(document.getElementById('myChart4'));var option4 = {    tooltip : {  //提示框        trigger: 'axis',  //触发类型(坐标轴触发)        alwaysShowContent:false,  //是否永远显示提示框的内容        backgroundColor:'rgba(32,174,252,0.7)', //提示框的背景颜色        textStyle:{  //提示框浮层的文本样式        },    },    calculable : true,    xAxis : [        {            type : 'category',            name:'()',        //X轴名称单位            nameLocation:'end', //名称的位置            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:0,  //名称与X轴的距离            boundaryGap: true,//坐标的刻度是否在中间            min:'3',//坐标轴刻度最小值            max:'dataMax', //坐标轴刻度的最大值            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisTick:{ //坐标轴刻度相关设置                length:'0' //我设置成0            },            axisLabel:{                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                }            },            data : ['3','4','5','6','7','8','9','10']        }    ],//X轴设置    yAxis : [        {            type : 'value', //类型数值轴            name:'()',    //坐标轴名称            nameTextStyle:{     //名称的样式                color:'#999',                fontSize:'12px'            },            nameGap:3,  //名称与Y轴的距离            axisTick:{ //坐标轴刻度相关设置                length:'0' //我设置成0            },            axisLine:{//坐标轴线条相关设置(颜色等)                lineStyle:{                    color:'#ccc'                }            },            axisLabel:{                //formatter: '{value} °C',//标签内容内置的格式转化器比如这个表示在后面加一个c                textStyle:{                    color:"#999",  //坐标轴刻度文字的颜色                    fontSize:'12px' //坐标轴刻度文字的大小                }            },            splitLine:{    //坐标轴分隔线。默认数值轴显示,类目轴不显示。                show:false            }        }    ],    grid:{ //直角坐标系内绘图网格        left:36  //由于1000显示被挡住了,所以我让他左移36px;这个功能类似于paddingleft    },    series : [  //系列列表        {            name:'',   //系列名称 用于tooltip的显示            type:'line',            data:[360, 500, 400, 600, 530, 840, 540,350],            itemStyle:{  //折线拐点的样式                normal:{                    color:'#53d0ab',  //折线拐点的颜色                }            },            lineStyle:{  //线条的样式                normal:{                    color:'#9be4ce',  //折线颜色                }            },            areaStyle:{ //区域填充样式                normal:{                    //线性渐变                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{                        offset: 0, color: '#abe8d6' // 0% 处的颜色                    }, {                        offset: 1, color: '#fff' // 100% 处的颜色                    }], false)                }            },            markPoint : {                data : [                    {type : 'max', name: '最大值'},                    {type : 'min', name: '最小值'}                ]            },            markLine : {  //标记线                data : [                    {type : 'average', name: '平均值'}                ]            }        }    ]};myChart4.setOption(option4);window.onload=function(){    window.onresize = function () {        myChart1.resize();  //会员数据图表        myChart2.resize();  //会员数据图表        myChart3.resize();  //会员数据图表        myChart4.resize();  //会员数据图表    }}</script></body></html>

0 0
原创粉丝点击