// 利用 computed 属性
<div class="star" :class="starSizeType"></div>
computed: {
starSizeType() { // 返回 星级的大小类型 48/36/24
return 'star-' + this.size;
}
}(2) 遍历星星的数量
<span v-for=”itemClass in itemClasses” :class=”itemClass” class=”star-item” track-by=”$index”></span>
(3) 定义常量 控制 每个星的状态
// 类名用变量存起来
const LENGTH = 5 // 星星长度
const CLS_ON = 'on' // 全星
const CLS_HALF = 'half' // 半星
const CLS_OFF = 'off'// 空星(4) 通过计算 判断每个span 的类型
itemClasses () { // 返回一个数组为每个span 的类名 (遍历)
let spanClassList=[];
// 利用 实参评分来判断 有几颗全星,半星,空星
let scores=( Math.floor(this.score * 2) ) / 2
let intNum= Math.floor(scores); // 全星个数
let HashalfNum= scores % 1 !== 0 // 半星
for(var i=0;i<intNum;i++){ // 遍历全星的span
spanClassList.push(CLS_ON)
}
if(HashalfNum){ // 如果有半星 加类名
spanClassList.push(CLS_HALF)
}
while(spanClassList.length<LENGTH){// 判断 是否有空星 及个数
spanClassList.push(CLS_OFF)
}
return spanClassList;
}
}
(5) 通过 动态绑定class 来 给span 加类名
<div class="star" :class="starSizeType">
<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
</div>










