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 相关文章推荐
代码生成器 document.write()
Apr 15 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
Jun 17 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
Feb 19 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
angular2路由之routerLinkActive指令【推荐】
May 30 Javascript
浅析Vue 生命周期
Jun 21 Javascript
解决Layui数据表格中checkbox位置不居中的方法
Aug 15 Javascript
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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
Javascript Global对象
2009/08/13 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
医疗专业毕业生求职信
2014/08/28 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
长城英文导游词
2015/01/30 职场文书
复兴之路观后感
2015/06/02 职场文书
宿舍管理制度范本
2015/08/07 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书