首页 > 编程 > JavaScript > 正文

vue.js 实现评价五角星组件的实例代码

2019-11-19 13:16:32
字体:
来源:转载
供稿:网友

饿了么的五角星有三种形状,分别是实星,半星,空星

并且组件要能实现,这个五角星不同大小,评分也不一样,比如满分五颗星,四颗半星,四颗星等等....

所以需要像组件传入一个大小: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 实现评价五角星组件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表