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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
全面了解javascript三元运算符
Jun 27 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
js实现仿购物车加减效果
Mar 01 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
Mar 09 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
JS随机密码生成算法
Sep 23 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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使用sql server验证连接数据库的方法
2014/12/25 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
python类继承用法实例分析
2015/05/27 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
毕业生自我鉴定
2013/11/05 职场文书
初三物理教学反思
2014/01/21 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
服务员岗位责任制
2014/02/11 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
社区活动总结范文
2015/05/07 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
小学生法制教育心得体会
2016/01/14 职场文书