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 相关文章推荐
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
Feb 11 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
快速解决js开发下拉框中blur与click冲突
Oct 10 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
JavaScript实现多重继承的方法分析
Jan 09 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php防止sql注入的方法详解
2017/02/20 PHP
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
js css自定义分页效果
2017/02/24 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
webpack3之loader全解析
2017/10/26 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
Python 错误和异常小结
2013/10/09 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
简单介绍Python中的JSON使用
2015/04/28 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
numpy实现RNN原理实现
2021/03/02 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
中间件分为哪几类
2012/03/14 面试题
倡议书范文格式
2014/05/12 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电