Vue实现一个星级评分组件

星级评分在WEB开发中经常可能会用到,因此把他封装成一个vue组件是很合适的,要做的效果如下:

因此我们需要通过后台传递过来的score来写业务逻辑

比如这个模拟数据,3.6分就应该是三颗半星,小于3.5分大于3分的依旧按3分判断

在设计给出的图标中单颗星级有无星级,半颗,以及一颗

根据星星的大小,还会给出24,36,48格式大小的星星,因此这个组件的逻辑还是比较复杂的

star组件需要两个从外部传递进来的参数,一个是star的大小,一个是分数

因此在props里定义这两个从外部传递进来的变量

首先处理size,也就是传递进来星星的大小

使用计算方法,加上star-的前缀来+this.size 区分要传递进来的大小

这样就绑定了基本样式和附加的样式,组件会根据传递进来不同的size渲染出不同的类名

接下来就可以根据不同的类名来写不同的样式,也就是使用不同大小的背景图片

接下来应该根据score的大小循环遍历,判断是渲染星还是半星还是空心,这个数据应该是个数组[on,on,on,half,CLS_OFF],这个数组就能代表了3.6分的显示

同样在计算属性里添加一个方法获取到数组形式的数据

使用v-for循环遍历这个数组,并且把数组项设置成每一项的className

设置每一项l类名对应的样式

其他两个大小的star也是这样

在header父组件中导入这个组件

使用该组件,并传递参数进去

查看效果是否已经实现了:

改变参数再做测试

好了,基本没啥问题了,完整组件代码已经上传到码云,在\src\components\star

https://gitee.com/delisteam/elestar-component

原文地址:https://www.cnblogs.com/rmty/p/11436953.html

时间: 2024-10-14 02:45:12

Vue实现一个星级评分组件的相关文章

干货之运用CALayer创建星级评分组件(五角星)

本篇记录星级评分组件的创建过程以及CALayer的运用. 为了实现一个星级评分的组件,使用了CALayer,涉及到mask.CGPathRef.UIBezierPath.动画和一个计算多角星关键节点的算法. CALayer管理基于图像的内容,并让我们可以在内容上添加动画.UIView及其子类拥有一个属性layer,我们可以运用该属性做出非常多的效果.例如圆角.多边形.甚至自定义形状的view,局部遮挡,擦除模糊效果,局部内容依次闪亮效果,弧形进度条等等. 首先查看CALayer的一个属性mask

如何在iPhone 显示一个 星级评分

http://blog.csdn.net/fanjunxi1990/article/details/8663914 由于项目需求,需要做一个列表,里面有各个商品的评分,就是app store里面所有app的星级评分 下面是DisplayStarView.h [csharp] view plaincopy // //  DisplayStarView.h //  testExpress // //  Created by Juncy_Fan on 13-3-12. //  Copyright (c

vue实现一个简易Popover组件

概述 之前写vue的时候,对于下拉框,我是通过在组件内设置标记来控制是否弹出的,但是这样有一个问题,就是点击组件外部的时候,怎么也控制不了下拉框的关闭,用户体验非常差. 当时想到的解决方法是:给根实例创建一个标记来控制,然后一级一级的把这个标记传进来.但是这样每次配置都要改根组件,非常不灵活. 最近看museUI库,发现它的下拉框Select实现的非常灵活,点击组件外也能控制下拉框关闭,于是想探究一番,借此机会也深入学习一下vue. museUI源码 首先去看Select的源码: directi

在上线项目中,用Vue写一个星级评价

先看一下效果: html: <div class="big-star-box"> <img :src="imgNum>0 ? srcStar : srcNoStar" @click="imgItem(1)"> <img :src="imgNum>1 ? srcStar : srcNoStar" @click="imgItem(2)"> <img :src

jQuery Raty - 不错的星级评分插件

在做商品评价时,一般情况下,我们需要一个星级评分的组件,而jQuery Raty恰好满足我们的需求. 一.展示 二.使用教程 ①.下载插件 https://github.com/wbotelhos/raty ②.导入文件 <script type="text/javascript" src="${ctx}/components/raty/jquery.raty.js"></script> <link type="text/cs

js实现星级评分之方法一

利用一个星级评分的小案例,来逐步封装js星级评分插件. 从最基础的js知识,通过一个小的demo,逐步学习js的面向对象知识. 从浅到深,逐步递进. 图片素材 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>星级评分--第一种实现方式</title> </head> <style type="text/css&quo

ExtJS(3)- 自定义组件(星级评分)

今天介绍ExtJS的组件开发,这里以星级评分为示例,首先来看看效果图: 然后是功能操作:鼠标移动到五个星星上面时,会有tooltip显示当前的分值.如图:鼠标悬停在第四颗星星时前四颗星星显示高亮笑脸,当点击下去时锁定笑脸并且设定份数为4. 然后我们来说一下实现原理,Ext的组件基本单元是Ext.Component,所以自定义组件可以继承Component,然后显示部分直接用html来显示,包括css和动态事件都可以直接在html上编辑添加. 接下来我们来看代码: Ext.define('Pact

UI组件之ProgressBar及其子类(二)SeekBar拖动条和RatingBar星级评分条的使用

拖动条采用拖动滑块的位置来表示数值 SeekBar的常用xml属性值: 重要的android:thumb制定一个Drawable对象,改变滑块外观 通过滑块来改变图片的透明度: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

js实现星级评分效果(最短代码)

1. 前言 此方案受到JS单行写一个评级组件启发,自己写了一个简单Demo. 功能有正常滑动,动态显示实心星星个数:当点击确认,则保持当前的实心星星个数:再移动时为点击,则离开后还是保持之前的状态. 此demo没有文字信息等提示,可以根据需要自行添加使用. 2. 代码 <!DOCTYPE html> <html> <head> <title>Star Rating</title> <script src="http://apps.