echarts 随屏幕大小改变大小(resize)
- echarts多个图表大小随屏幕的大小改变自适应,Echarts 多图表自适应窗口大小,echarts随页面大小变化而变化;
页面单个 echarts
- 当页面只有一个图表的时候直接用
window.onresize = myChart.resize
示例
可直接复制粘贴
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 ECharts 实例</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/5.0.1/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 100%;height:500px;"></div>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data: ['销量'] }, xAxis: { data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] };
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
window.onresize = myChart.resize;
</script>
</body>
</html>
- 宽度需要设置为百分比,高度自适应亦然。
页面有多个 echarts
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 ECharts 实例</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/5.0.1/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 100%;height:500px;"></div>
<div id="mainA" style="width: 100%;height:500px;"></div>
<div id="mainB" style="width: 100%;height:500px;"></div>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('main'));
var myChartA = echarts.init(document.getElementById('mainA'));
var myChartB = echarts.init(document.getElementById('mainB'));
// 指定图表的配置项和数据
var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data: ['销量'] }, xAxis: { data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] };
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
myChartA.setOption(option);
myChartB.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
myChartA.resize();
myChartB.resize();
});
/* 或者
* window.onresize = function(){
* myChart.resize();
* myChartA.resize();
* myChartB.resize();
* }
/
</script>
</body>
</html>
vue 组件化开发
- 如果把绑定放在父页面的 mounted 里面会导致找不到子组件的 dom元素,导致自适应失效
this.$nextTick(() => {})
- 用 nextTick 函数,等dom全部加载好再绑定
- 然后可以在组件上绑定 ref,将子组件的echarts绑定到data中方便父组件访问