更新记录
1.0.0(2026-04-16)
- 基础展示:显示固定分数(只读模式),支持任意分数值
- 用户打分:点击星星进行打分(可选模式),提供即时反馈
- 半星支持:支持 0.5 分的粒度,并且根据小数部分动态调整填充比例(如 4.1 分填充 10%,4.2 分填充 20%)
- 自定义图标:可替换成自定义图片/图标(如爱心、大拇指等)
- 尺寸颜色:星星大小、颜色、间距可配置,适应不同场景
- 文案辅助:显示评分对应的文字描述(如 "好评"、"优秀" 等)
- 符合 easycom 规范:无需手动导入和注册,直接在页面中使用
- 响应式设计:适配不同设备屏幕尺寸
平台兼容性
uni-app(3.7.6)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | √ | √ | √ | - | 7.1 | 16 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | - | - | - | √ | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | × | √ |
rating-pro 组件
一个基于 uni-app 的星级评分组件,支持多种自定义配置和交互方式,提供直观、美观的评分体验。
🚀 功能特点
- 基础展示:显示固定分数(只读模式),支持任意分数值
- 用户打分:点击星星进行打分(可选模式),提供即时反馈
- 半星支持:支持 0.5 分的粒度,并且根据小数部分动态调整填充比例(如 4.1 分填充 10%,4.2 分填充 20%)
- 自定义图标:可替换成自定义图片/图标(如爱心、大拇指等)
- 尺寸颜色:星星大小、颜色、间距可配置,适应不同场景
- 文案辅助:显示评分对应的文字描述(如 "好评"、"优秀" 等)
- 符合 easycom 规范:无需手动导入和注册,直接在页面中使用
- 响应式设计:适配不同设备屏幕尺寸
📦 安装
方式一:直接复制组件文件
- 将
rating-pro目录复制到您的 uni-app 项目的components目录中 - 直接在页面中使用
<rating-pro>标签
📖 使用方法
基本使用
<template>
<view class="content">
<rating-pro></rating-pro>
</view>
</template>
只读模式(显示固定分数)
<template>
<view class="content">
<rating-pro :rating="4.5" :readonly="true"></rating-pro>
</view>
</template>
自定义评分和最大星星数
<template>
<view class="content">
<rating-pro :rating="3.4" :max-stars="10"></rating-pro>
</view>
</template>
监听评分变化
<template>
<view class="content">
<rating-pro :rating="rating" @update:rating="handleRatingChange"></rating-pro>
<text>当前评分:{{ rating }}</text>
</view>
</template>
<script setup>
import { ref } from 'vue'
const rating = ref(3)
const handleRatingChange = (newRating) => {
rating.value = newRating
console.log('评分已更新:', newRating)
}
</script>
自定义图标
<template>
<view class="content">
<rating-pro :icon="'/static/heart.png'"></rating-pro>
</view>
</template>
自定义尺寸和颜色
<template>
<view class="content">
<rating-pro :size="32" :color="'#ff4444'" :inactive-color="'#ffcccc'" :spacing="8"></rating-pro>
</view>
</template>
自定义文案
<template>
<view class="content">
<rating-pro :labels="['非常差', '差', '一般', '好', '非常好']"></rating-pro>
</view>
</template>
隐藏文本和标签
<template>
<view class="content">
<rating-pro :show-text="false"></rating-pro>
</view>
</template>
🎨 参数说明
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| rating | Number | 3 | 当前评分,支持小数(如 3.5) |
| maxStars | Number | 5 | 最大星星数 |
| readonly | Boolean | false | 是否为只读模式 |
| halfStar | Boolean | true | 是否支持半星 |
| icon | String | '' | 自定义图标路径,为空时使用默认星星 |
| size | Number | 24 | 星星大小(px) |
| color | String | '#ffcc00' | 激活状态颜色 |
| inactiveColor | String | '#ccc' | 未激活状态颜色 |
| spacing | Number | 5 | 星星间距(px) |
| showText | Boolean | true | 是否显示文本 |
| showScore | Boolean | true | 是否显示分数 |
| showLabel | Boolean | true | 是否显示标签 |
| labels | Array | ['很差', '较差', '一般', '良好', '好评'] | 评分对应的文字描述 |
📡 事件说明
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| update:rating | 评分变化时触发 | 新的评分值(Number) |
🛠️ 技术实现
- CSS 绘制星星:使用
clip-path属性绘制星星形状,避免使用 Unicode 字符 - 渐变背景:使用线性渐变实现半星效果,保持星星完整
- 动态填充:根据评分的小数部分动态调整半星的填充比例
- 自定义图标支持:使用
mask属性实现自定义图标的半星效果 - 响应式设计:使用灵活的布局和单位,适配不同屏幕尺寸
🔧 兼容性
- ✅ 支持 H5
- ✅ 支持微信小程序
- ✅ 支持支付宝小程序
- ✅ 支持百度小程序
- ✅ 支持字节跳动小程序
- ✅ 支持 QQ 小程序
🤝 贡献
欢迎提交 Issue 和 Pull Request 来帮助改进这个组件!
📄 许可证
MIT License
📞 联系
如有问题或建议,请在 GitHub 仓库中提交 Issue。
希望这个组件能为您的项目带来帮助! ⭐

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 1
赞赏 0
下载 11570593
赞赏 1905
赞赏
京公网安备:11010802035340号