更新记录
1.0.0(2025-12-07) 下载此版本
appx-rate 是基于 uni-app x 开发的通用评分组件,支持全星 / 半星评分、自定义图标 / 颜色 / 样式、只读 / 禁用状态,适配多端运行,满足各类评分场景需求。
平台兼容性
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
appx-rate 评分组件
appx-rate 是基于 uni-app x 开发的通用评分组件,支持全星/半星评分、自定义图标/颜色/样式、只读/禁用状态,适配多端运行,满足各类评分场景需求。
组件特性
- 支持全星/半星评分模式切换;
- 自定义星星图标(文本/字体图标)、颜色、尺寸;
- 支持评分文本展示,支持占位符动态替换评分值;
- 提供只读/禁用状态,自定义样式穿透;
- 适配移动端触摸交互,支持点击/滑动评分;
- 完善的类型定义,兼容字符串/数字类型的属性传入。
快速使用
基础用法
<template>
<appx-rate v-model="rate" />
</template>
<script lang="uts" setup>
const rate = ref(3);
</script>
半星评分
<appx-rate v-model="rate" allow-half="true" />
显示评分文本
<appx-rate v-model="rate" show-text="true" text="当前评分:{value}星" />
只读状态
<appx-rate v-model="rate" readonly="true" />
属性说明
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| modelValue | number / string | 0 | 绑定值,当前评分(支持半星,如 2.5) |
| count | number / string | 5 | 星星总数 |
| allowHalf | boolean / string | false | 是否支持半星评分(字符串值需传 "true"/"false") |
| readonly | boolean / string | false | 是否只读(不可点击/触摸修改评分) |
| disabled | boolean / string | false | 是否禁用(视觉置灰,不可交互) |
| normalIcon | string | ☆ | 未选中状态图标(支持文本、字体图标如 iconfont 类名) |
| activeIcon | string | ★ | 选中状态图标 |
| halfIcon | string | ★ | 半星状态图标(allowHalf 为 true 时生效) |
| iconSize | number / string | 24px | 星星图标大小(支持 px/rpx 单位,数字自动补 px) |
| normalColor | string | #E5E5E5 | 未选中状态颜色 |
| activeColor | string | #FFD100 | 选中状态颜色 |
| halfColor | string | #FFD100 | 半星状态颜色 |
| iconFontFamily | string | '' | 字体图标库字体家族(如 iconfont,需先引入字体库) |
| showText | boolean / string | false | 是否显示评分文本 |
| text | string | {value}分 | 评分文本内容,{value} 为评分值占位符 |
| textSize | number / string | 14px | 评分文本大小 |
| textColor | string | #666666 | 评分文本颜色 |
| textMargin | number / string | 8px | 文本与星星的间距(默认左间距) |
| containerStyle | object / string | {} | 容器自定义样式(支持对象/JSON 字符串) |
| starItemStyle | object / string | {} | 星星项自定义样式 |
| starIconStyle | object / string | {} | 星星图标自定义样式 |
| textStyle | object / string | {} | 评分文本自定义样式 |
事件说明
| 事件名 | 触发时机 | 回调参数 | 说明 |
|---|---|---|---|
| update:modelValue | 评分值变更时 | value: number | v-model 绑定的更新事件,返回当前评分 |
| change | 评分值变更时 | value: number | 评分变更事件,返回当前评分 |
样式自定义示例
自定义星星颜色和大小
<appx-rate
v-model="rate"
icon-size="32rpx"
normal-color="#CCCCCC"
active-color="#FF5722"
/>
使用字体图标(如 iconfont)
<!-- 需先全局引入 iconfont 字体库 -->
<appx-rate
v-model="rate"
normal-icon=""
active-icon=""
icon-font-family="iconfont"
/>
自定义容器和星星样式
<appx-rate
v-model="rate"
:container-style="{ padding: '10px' }"
:star-item-style="{ marginRight: '6px' }"
/>
<!-- 或传入 JSON 字符串 -->
<appx-rate
v-model="rate"
container-style="{ 'padding': '10px' }"
star-item-style="{ 'margin-right': '6px' }"
/>
注意事项
- 属性值兼容字符串类型(如
allow-half="true"),组件内部会自动解析为对应类型; - 使用字体图标时,需确保已全局引入字体库,并正确设置
iconFontFamily; - 半星模式下,点击星星会切换“半星/全星”状态(如点击第3颗星,会在 2.5/3 之间切换);
- 禁用/只读状态下,组件会自动置灰(opacity: 0.6)且禁止交互;
- 样式传入字符串时,需遵循 JSON 格式(如
"{ 'font-size': '14px' }"),组件内部会自动解析。
常见问题
Q:半星模式下,评分值为什么是 x.5?
A:半星模式下,评分值以 0.5 为步长(如 1.5、2.5),这是组件默认的半星评分逻辑,符合通用评分场景的交互习惯。
Q:如何修改星星之间的间距?
A:可通过 starItemStyle 属性设置 margin-right,或直接覆盖组件的 scoped 样式(需使用 ::v-deep):
::v-deep .appx-rate-star-item {
margin-right: 8px;
}
Q:评分文本的占位符不生效?
A:需确保 text 属性中包含 {value} 占位符,组件会自动替换为当前评分值(如 text="评分:{value}分")。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 5
赞赏 0
下载 11867577
赞赏 1818
赞赏
京公网安备:11010802035340号