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 相关文章推荐
javascript showModalDialog模态对话框使用说明
Dec 31 Javascript
Javascript 判断客户端浏览器类型代码
Mar 01 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
小程序分享链接onShareAppMessage的具体用法
May 22 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
python线程池的实现实例
2013/11/18 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
基于python plotly交互式图表大全
2019/12/07 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
医学专业毕业生求职信
2014/06/20 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js