star组件

一、star组件

<template>
    <div class="star" :class="starType">
        <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index" ></span>
    </div>
</template>

<script type="text/ecmaScript-6">
    const LENGTH = 5
    const CLS_ON = ‘on‘
    const CLS_HALF = ‘half‘
    const CLS_OFF = ‘off‘
    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(this.score)
             for (let i = 0; i < integer; i++) {
                 result.push(CLS_ON)
             }
             if (hasDecimal) {
                 result.push(CLS_HALF)
             }
             while (result.length < LENGTH) {
                 result.push(CLS_OFF)
             }
             console.log(‘result‘, result)
             return result
          }
      }
    }
</script>

<style lang="stylus" rel="stylesheet/stylus">
    @import "../../common/styles/minxin.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
       &.off
           bg-image(‘../../assets/img/star48_off‘)
       &.on
           bg-image(‘../../assets/img/star48_on‘)
       &.half
           bg-image(‘../../assets/img/star48_half‘)
    &.star-36
      .star-item
       width:15px
       height:15px
       margin-right:16px
       background-size:15px 15px
       &.last-child
             margin-right:0
       &.on
            bg-image(‘../../assets/img/star36_on‘)
       &.half
            bg-image(‘../../assets/img/star36_half‘)
       &.off
            bg-image(‘../../assets/img/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(‘../../assets/img/star24_on‘)
        &.half
            bg-image(‘../../assets/img/star24_half‘)
        &.off
            bg-image(‘../../assets/img/star24_off‘)

</style>

二、图片背景引用

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")

三、引用

 import star from ‘../../components/star/star‘

四、注册

 props: {
        seller: {
            type: Object
        }
      },

五、应用

<star :size="48" :score="seller.score"></star>

  

时间: 2025-01-07 01:08:10

star组件的相关文章

【vue】饿了么项目-header组件开发

1.数据传递的理解 在App.vue中用到了header组件,首先注册组件 components: { 'v-header': header } 然后才能引用 <v-header :seller="seller"></v-header> :seller="seller"的意思是将seller对象传递给v-header中的seller,而v-header中从哪里获得seller呢? 通过props从父组件中获得,且要指定数据类型 export

Vue实现一个星级评分组件

星级评分在WEB开发中经常可能会用到,因此把他封装成一个vue组件是很合适的,要做的效果如下: 因此我们需要通过后台传递过来的score来写业务逻辑 比如这个模拟数据,3.6分就应该是三颗半星,小于3.5分大于3分的依旧按3分判断 在设计给出的图标中单颗星级有无星级,半颗,以及一颗 根据星星的大小,还会给出24,36,48格式大小的星星,因此这个组件的逻辑还是比较复杂的 star组件需要两个从外部传递进来的参数,一个是star的大小,一个是分数 因此在props里定义这两个从外部传递进来的变量

[转]vue全面介绍--全家桶、项目实例

慢慢了解vue及其全家桶的过程 原文http://blog.csdn.net/zhenghao35791/article/details/67639415 简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和React.js的优点,并剔除了它们的缺点”.授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You). Vue.js 是一个J

Unity自定义mesh以及编译器

Star 自定义编辑器简易教程 an introduction to custom editors 原文地址 http://catlikecoding.com/unity/tutorials/star/ http://blog.csdn.net/lilanfei/article/details/7680802 简介 Introduction 这个教程将让你学会如何创建一个星型控件以及如何制作这个控件的自定义编辑器.你将学会: 动态的建立Mesh. 使用一个嵌套类. 建立一个自定义编辑器. 使用S

vue全面介绍--全家桶、项目实例

简介 "简单却不失优雅,小巧而不乏大匠". 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,"vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点".授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You). Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.

Vue.js 高仿饿了么外卖APP

第1章 课程简介介绍课程的学习目标和学习内容.1-1 课程简介1-2 课程安排 第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.2-1 Vuejs介绍-近年来前端开发趋势2-2 Vuejs介绍-MVVM框架2-3 Vuejs介绍-什么是Vuejs及Vuejs生态2-4 Vuejs介绍-对比Angular.React2-5 Vuejs介绍-Vuejs核心

不会发布npm包?进来包会!

前言 本文从发布一个简单的npm包开始,逐步对它进行完(踩)善(坑)和扩(装)展(逼),最后得到一个相对完善的npm包,下面就让我们手摸手,呸!手把手的开始吧! 一.一个最简单的npm包 1.1 新建文件夹 可以找个地方直接建个文件夹,最好语义化一点,这样以后也方便管理,我们这里用终端建文件夹: mkdir toupper-case-project // 这里我们建了一个名为toupper-case-project的文件夹 (对命令行还不太熟的小伙伴可以看看我这篇博客命令行不会?看这里) 1.2

Vue.js高仿饿了么外卖App 2016最火前端框架

第1章 课程导学(二期)-15号开放 包括课程概述.核心模块.核心技术.课程安排.课程收获.讲授方式.学习前提等方面的介绍,最后演示了整个外卖App的功能,让同学们对课程项目有一个直观的了解. 1-1 导学(必看) 第2章 项目准备工作(二期)-15号开放 包括项目需求分析.Vue-cli 3.0 脚手架介绍.cube-ui 介绍.目录模块分析.api 接口 mock 等. 2-1 Vue-cli 3.0 介绍 2-2 目录介绍 & cube-ui 安装 2-3 api 接口 mock 第3章

cocos api

$$$$$$$$$$$$$$$$cc.p() <=> x,y $$$$$$$$$$$$$$$$场景间的跳转$$$$$$$$$$$$$$$$cc.director.loadScene('场景名称') -- game.firecc.director.preloadScene('场景名称') -- game.fire $$$$$$$$$$$$$$$$计时器$$$$$$$$$$$$$$$$this.schedule(function(){},秒)component.schedule(function(