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 相关文章推荐
jquery ui resizable bug解决方法
Oct 26 Javascript
JS localStorage实现本地缓存的方法
Jun 22 Javascript
js鼠标及对象坐标控制属性详细解析
Dec 14 Javascript
js鼠标点击图片实现随机变换图片的方法
Feb 16 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
Apr 06 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
Node.Js生成比特币地址代码解析
Apr 21 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
Node对CommonJS的模块规范
Nov 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可变函数的使用详解
2013/06/14 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
python不带重复的全排列代码
2013/08/13 Python
python二分法实现实例
2013/11/21 Python
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
整理Python中的赋值运算符
2015/05/13 Python
python3爬取各类天气信息
2018/02/24 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
校园活动策划书范文
2014/01/10 职场文书
卫生系统先进事迹
2014/05/13 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
董事长助理岗位职责
2015/02/11 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
python基础之类方法和静态方法
2021/10/24 Python