最近在做公司项目时,UI图要求饼图在大屏幕2X2排列,在小屏幕1X4排列。最开始想到的方法是用一个变量判断是否是小屏幕,在
resize
事件里改变它的值,这种方法实现有个弊端就是要刷新才起的了效果。
于是我想去 官方文档 看看有没有解决方案,还真让我找到了。
echarts版本必须在 5.0.0 以上,否则会报错!
主要实现配置的配置项:
在options里面设置media。第一项里设置query: { minAspectRatio: 1}
minAspectRatio
表示最小纵横比,也就是屏幕的宽高比。
下面贴出配置项:
const option = {
legend: {},
tooltip: {},
dataset: {
source: [
['product', '2012', '2013', '2014', '2015', '2016', '2017'],
['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
]
},
series: [
{
type: 'pie',
radius: '20%',
center: ['25%', '30%']
// No encode specified, by default, it is '2012'.
}, {
type: 'pie',
radius: '20%',
center: ['75%', '30%'],
encode: {
itemName: 'product',
value: '2013'
}
}, {
type: 'pie',
radius: '20%',
center: ['25%', '75%'],
encode: {
itemName: 'product',
value: '2014'
}
}, {
type: 'pie',
radius: '20%',
center: ['75%', '75%'],
encode: {
itemName: 'product',
value: '2015'
}
}],
// Optional. Only for responsive layout:
media: [
{
query: { minAspectRatio: 1 },
option: { // 满足最小宽高比1
series: [
{ radius: '40%', center: ['20%', '50%'] },
{ radius: '40%', center: ['40%', '50%'] },
{ radius: '40%', center: ['60%', '50%'] },
{ radius: '40%', center: ['80%', '50%'] }
]
}
}, {
option: { // 不满足最小宽高比1
series: [
{ radius: '20%', center: ['25%', '30%'] },
{ radius: '20%', center: ['75%', '30%'] },
{ radius: '20%', center: ['25%', '75%'] },
{ radius: '20%', center: ['75%', '75%'] }
]
}
}]
}
实现结果展示
- 大屏下:
- 小屏下: