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 相关文章推荐
根据选择不同的下拉值出现相对应的文本输入框
Aug 01 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
JS动态日期时间的获取方法
Sep 28 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
Express的路由详解
Dec 10 Javascript
javascript数据类型验证方法
Dec 31 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
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
adodb与adodb_lite之比较
2006/12/31 PHP
php修改时间格式的代码
2011/05/29 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php随机抽奖实例分析
2015/03/04 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
物业招聘计划书
2014/01/10 职场文书
公司聘任书模板
2014/03/29 职场文书
股份合作协议书
2014/04/12 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
工商管理本科生求职信
2014/07/13 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android