vue之星级评分组件开发

1、score.vue

<template>
<div class="star" :class="starType">
<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item"></span>
</div>
</template>


<script>
const LENGHT=5;
const CLS_ON='on';
const CLS_HALF='half';
const CLAS_OFF='off';
export default{
props:{
size:{
type:Number
},
score:{
type:Number
}
},
computed:{
starType(){     //根据不同的设计图设置不同的大小
return 'star-'+this.size;
},
itemClasses(){
let result=[];
let score=Math.floor(this.score*2)/2;
let hasDecimal = this.score %1 !==0; //半星
let integer=Math.floor(score);  //全星
for(let i=0;i<integer;i++){
result.push(CLS_ON);
};
if(hasDecimal){
result.push(CLS_HALF);
};
   while(result.length<LENGHT){  //如果不足五星 灰色星星补全
    result.push(CLAS_OFF);
   }    
   return result;
}
}
}
</script>

<style>
.star{ display: inline-block;}
.star-item{}
.star-16 span{ width: 16px; height: 16px;}
.star-20 span{width: 20px; height: 20px;}
.star-item{ display: inline-block;}
.star-item.on{ background:url(../../../../static/images/mt_star_q.jpg)}
.star-item.half{ background:url(../../../../static/images/mt_star_b.jpg);}
.star-item.off{ background:url(../../../../static/images/mt_star_h.jpg);}

</style>

2、parent.vue 引入score的组件

<score :size="16" :score="shopscore.score"></score>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值