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 相关文章推荐
用js遍历 table的脚本
Jul 23 Javascript
JavaScript 学习笔记(四)
Dec 31 Javascript
JavaScript 设计模式 安全沙箱模式
Sep 24 Javascript
javascript工具库代码
Mar 29 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
详解axios在vue中的简单配置与使用
May 10 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
使用Electron构建React+Webpack桌面应用的方法
Dec 15 Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 Javascript
Nuxt.js之自动路由原理的实现方法
Nov 21 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文件上传主要代码讲解
2013/09/30 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
python基础教程之常用运算符
2014/08/29 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
python数据处理实战(必看篇)
2017/06/11 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python 接口返回的json字符串实例
2018/03/27 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python @property原理解析和用法实例
2020/02/11 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
安全生产演讲稿
2014/05/09 职场文书
校园元旦活动总结
2014/07/09 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
子女赡养老人协议书
2016/03/23 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书