更新记录
1.0.3(2023-12-15)
下载此版本
删除无用的文件,添加 极简主题
1.0.2(2023-12-15)
下载此版本
支持自定义顶点个数,不支持手动指定顶点位置,只能通过计算得出
1.0.1(2023-12-15)
下载此版本
支持自定义顶点个数,不支持,手动支持顶点位置,只能通过计算得出
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
× |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
cj-polygonal
在实际使用中,宽高可能需要手动计算后指定(重点)
参数 |
说明 |
默认值 |
width |
宽 |
300 |
height |
高 |
300 |
data |
[{label,value,displayValue}],有多少个对象,就有多少个顶点。[label:标签名,value:属性值] |
- |
theme |
主题:default、dark、bright、minimalist |
default |
type |
类型:square(方形),circular(圆形) |
square |
title |
标题(适配不是很好,建议直接该组件只显示图,及所需要的属性标签) |
- |
vertexPositionsArrInit |
TODO 所有顶点的位置,后续实现自定义顶点需要用到 |
- |
maxValue |
属性的最大值 |
100 |
centerPointInit |
中点:{x,y},如果不指定,则是中心点 |
- |
isTextAdaptation |
是否需要文字适配:第一个会往里缩,不修改偏移角度的时候有用 |
false |
padding |
内间距(图案到边界的距离) |
2 |
startAngleInit |
开始度数(起始就是偏转角度),这个是具体的度数(默认是从最右边开始的) |
0 |
scaleNumberInit |
刻度数(包含中心点)【不建议刻度太多,10个以内吧,不然可能会有适配的问题,因为刻度线是占了空间的】 |
7 |
distanceInit |
每个刻度的间隔,是通过计算出来的(指定之后不再计算) |
- |
bgColorInit |
整体的背景颜色 |
- |
lineColorInit |
线条的颜色(刻度线) |
- |
lineWidth |
线的宽度 |
1 |
showBoundary |
是否显示分界线 |
true |
boundaryColorInit |
分界线的颜色 |
- |
boundaryWidth |
分界线的宽度 |
- |
textColorInit |
文字颜色 |
- |
fontStyle |
字体样式 |
bold 10px Arial |
patternLineColorInit |
图案的线条颜色 |
- |
patternLineWidth |
图案的线条宽度 |
2 |
patternFillColorInit |
图案的填充色 |
- |
patternImage |
填充图案(会覆盖填充色)[例如: /static/pattern.png] |
- |
titleFillColorInit |
标题填充颜色 |
- |
xTextShifting |
文字x轴偏移比例,显示的文字,其实也是一个更大的多边形 |
1 |
yTextShifting |
文字y轴偏移比例,displayValue 和 label 的垂直间隔 |
1 |
示例代码
<template>
<view class="content">
<view>
<cj-polygonal :data="data" :width="width" :height="height" :title="title" :theme="theme"></cj-polygonal>
</view>
</view>
</template>
<script>
export default {
data() {
return {
theme: "default",
width: 300,
height: 400,
title: "个人能力属性图",
data: [{
label: "力量",
value: 100,
//显示值
displayValue: "85KG"
}, {
label: "天赋",
value: 84,
displayValue: "56点",
}, {
label: "智力",
value: 66,
displayValue: "66点",
}, {
label: "敏捷",
value: 49,
displayValue: '36点',
}, {
label: "坚毅",
value: 33,
displayValue: '50点',
}, {
label: "防御",
value: 16.66,
displayValue: '优秀',
}]
}
},
onLoad() {
let arr = ["bright", "default", "dark", "minimalist"]
setInterval(() => {
for (var i = 0; i < this.data.length; i++) {
this.data[i].value = Math.floor(Math.random() * 100)
this.data[i].displayValue = this.data[i].value + "点"
}
this.theme = arr[Math.floor(Math.random() * 4)]
}, 1000)
},
methods: {
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>