
index.wxml
<view class="container">
<view>当前成绩: {{score}}</view>
<view class="star-container">
<block wx:for="{{5}}" wx:key="*this">
<image src="{{index < starCount? fullStarImg : emptyStarImg }}" mode="aspectFit" class="star-icon"
/>
</block>
</view>
</view>
index.wxss
.container {
padding: 20px;
text-align: center;
}
.star-container {
display: flex;
justify-content: center;
margin-top: 20px;
}
.star-icon {
width: 30px;
height: 30px;
margin: 0 5px;
}
index.js
Page({
data: {
score: 100, // 示例成绩,可根据实际情况修改
starCount: 0, // 显示的星星数量
fullStarImg: '../../../images/startFull.png', // 满星图片路径,需替换为实际图片路径
emptyStarImg: '../../../images/start.png' // 空星图片路径,需替换为实际图片路径
},
onLoad() {
// 根据成绩计算星星数量
this.calculateStarCount();
},
calculateStarCount() {
const { score } = this.data;
// 将 0 - 100 分的成绩映射到 0 - 5 星
let starCount = Math.round(score / 20);
this.setData({
starCount
});
}
});
starRating.wxml:使用 wx:for 循环渲染 5 个星星图标,根据 starCount 决定显示满星还是空星。
starRating.wxss:对页面布局和星星图标的样式进行设置。
starRating.js:在 onLoad 生命周期函数中调用 calculateStarCount 方法,根据成绩计算要显示的星星数量。成绩范围是 0 - 100 分,通过 Math.round(score / 20) 将其映射到 0 - 5 星。
starRating.json:设置页面的导航栏标题。
请将 fullStarImg 和 emptyStarImg 的路径替换为实际的满星和空星图片路径。
你可以根据实际需求修改 score 的值,以测试不同成绩下的星评显示效果。
如果是其他小程序框架(如支付宝小程序、百度小程序等),原理类似,只是语法和文件后缀名会有所不同。