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 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
jQuery UI-Draggable 参数集合
Jan 10 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
HTTP 304错误的详细讲解
Nov 13 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
vue的Virtual Dom实现snabbdom解密
May 03 Javascript
详解如何在Angular中快速定位DOM元素
May 17 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
vue--vuex详解
Apr 15 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
Apr 28 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
Python显示进度条的方法
2014/09/20 Python
python的常用模块之collections模块详解
2018/12/06 Python
python队列Queue的详解
2019/05/10 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python获取Pandas列名的几种方法
2019/08/07 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
中职生求职信
2014/07/01 职场文书
招标授权委托书样本
2014/09/23 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
Android中的Launch Mode详情
2022/06/05 Java/Android
windows系统安装配置nginx环境
2022/06/28 Servers