这篇文章主要介绍了vue.js如何实现评价五角星组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联建站服务项目包括宿城网站建设、宿城网站制作、宿城网页制作以及宿城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,宿城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到宿城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!饿了么的五角星有三种形状,分别是实星,半星,空星

并且组件要能实现,这个五角星不同大小,评分也不一样,比如满分五颗星,四颗半星,四颗星等等....
所以需要像组件传入一个大小:size,一个分数:score
代码如下:
<template>
<div class="star" :class="starType">
<span class="star-item" :class="itemClass" v-for="itemClass in itemClasses"></span>
</div>
</template>
<script type="text/ecmascript-6">
const LENGTH=5;
const CLS_ON="on";
const CLS_OFF="off";
const CLS_HALF="half";
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=score%1!==0; //是否有效数
let integer=Math.floor(score);//取整
for (var i = 0; i < integer; i++) {
result.push(CLS_ON);
}
if (hasDecimal) {
//有且最多一个半星
result.push(CLS_HALF);
}
while(result.length<LENGTH){
result.push(CLS_OFF);
}
//数组填充完毕
return result;
}
}
};
</script>
<style lang="stylus" ref="sheetstyle/stylus">
@import "../../common/stylus/mixin.styl";
.star
font-size:0
.star-item
display:inline-block
background-repeat:no-repeat
&.star-48
.star-item
width:20px
height:20px
margin-right:22px
background-size:20px 20px
&:last-child
margin-right:0
&.on
bg-image('star48_on')
&.half
bg-image('star48_half')
&.off
bg-image('star48_off')
&.star-36
.star-item
width:15px
height:15px
margin-right:6px
background-size:15px 15px
&:last-child
margin-right:0
&.on
bg-image('star36_on')
&.half
bg-image('star36_half')
&.off
bg-image('star36_off')
&.star-24
.star-item
width:10px
height:10px
margin-right:3px
background-size:10px 10px
&:last-child
margin-right:0
&.on
bg-image('star24_on')
&.half
bg-image('star24_half')
&.off
bg-image('star24_off')
</style>其中:使用了size为48,36,24,所以我们需要图片3种类型的图片,并且要使用适应不同分辨率,要有@2x.png,@3x.png图片

对了,bg-image方法是在mixin.styl中的,代码如下
bg-image($url) background-image:url($url+"@2x.png") @media (-webkit-min-device-pixel-ratio:3),(min-device-pixel-ratio:3) background-image:url($url+"@3x.png")
组件的使用就很简单了
<star :size="48" :score="3.5"></star>

感谢你能够认真阅读完这篇文章,希望小编分享的“vue.js如何实现评价五角星组件”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!