Vue header组件开发详解

2020-06-16 06:00:08易采站长站整理


// 利用 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>