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 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
document.write的几点使用心得
May 14 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
Mar 25 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
微信小程序数据分析之自定义分析的实现
Aug 17 Javascript
PM2自动部署代码步骤流程总结
Dec 10 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
yii上传文件或图片实例
2014/04/01 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
JavaScript面向对象精要(上部)
2017/09/12 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python中特殊函数集锦
2015/07/27 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Python post请求实现代码实例
2020/02/28 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
python的json包位置及用法总结
2020/06/21 Python
Python Django路径配置实现过程解析
2020/11/05 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
开业庆典主持词
2014/03/21 职场文书
企业职业病防治方案
2014/05/29 职场文书
社团活动总结书
2014/06/27 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python