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


Posted in Javascript onAugust 13, 2018

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

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图片

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

对了,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 实现评价五角星组件的实例代码

总结

以上所述是小编给大家介绍的vue.js 实现评价五角星组件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
记录几个javascript有关的小细节
Apr 02 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
jQuery实现鼠标划过展示大图的方法
Mar 09 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
详解原生js实现offset方法
Jun 15 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
vue-router定义元信息meta操作
Dec 07 Vue.js
Vue.js实现数据响应的方法
Aug 13 #Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 #jQuery
Bootstrap Table实现定时刷新数据的方法
Aug 13 #Javascript
angular2实现统一的http请求头方法
Aug 13 #Javascript
AngularJS发送异步Get/Post请求方法
Aug 13 #Javascript
vue后台管理之动态加载路由的方法
Aug 13 #Javascript
jQuery中$原理实例分析
Aug 13 #jQuery
You might like
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php实现可运算的验证码
2015/11/10 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
老生常谈python中的重载
2018/11/11 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
营业员实习自我鉴定
2013/12/07 职场文书
打架检讨书500字
2014/01/29 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
《将心比心》教学反思
2014/04/08 职场文书
终止合同协议书
2014/04/17 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
运动会横幅标语
2014/06/17 职场文书
先进员工获奖感言
2014/08/14 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
毕业论文致谢信
2015/05/14 职场文书
奔腾年代观后感
2015/06/09 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript