vue 实现的评分小星星组件,包括半星
一:实现的思路:
通过评分的分数,来算出高亮的全星有几颗,有没有半星,灰色星星有几颗,通过背景图片实现,例如:
评分 : 4.6 分
四舍五入计算把分数换算成0.5的倍数:Math.floor( 4.6 *2 ) / 2 等于 4.5
把星星放到数组 arr_star 里面:
是否需要半星 var half = 4.5 % 1 != 0 ? true :false //能被1取余整数的话就不需要半星为false,否则是true
把全星push到数组里面 for ( var i = 0; i< Math.floor( 4.5) ;i++ ) { arr_star.push( "on") } //on是星星高亮的图片名字
把半星放到数组里面 if( half ) { arr_star.push( "half" ) } //half是半星图片的名字
把灰色星星放到数组里面 if( arr_star.length < 5) {
for( var i=0;i<(5-arr_star.length) ; i++ ){ arr_star.push( "off" ) } //off是灰色星星的名字
二:具体实现代码:
2.1 html部分:
<template>
<div class="star">
<span v-for="(item,index) in itemClasslass" class="star-item" :key="index" :class="item"></span>
</div>
</template>
2.2 js部分
<script>
const lengths = 5;
const starOn = 'on';
const starHalf = 'half';
const starOff = 'off'; export default({
data(){
return { }
},
props:{
score:{//分数
type:Number,
default:function(){
return 5
}
}
},
created() {
},
computed:{
itemClasslass(){//星星的数组
let result = [];
let score = Math.floor(this.score * 2) / 2; //例如:把分数处理成在4.5以上及4.5就变成向上取整5,在4.5以下就变成4.5 //是否需要半星
let starhalf = score%1 != 0 ? true : false ; //几颗全星
let fullstar = Math.floor(score);
for(var i=0 ; i<fullstar;i++){//放全星
result.push(starOn);
}
if(starhalf){//放半星
result.push(starHalf)
}
if(result.length < lengths){//如果没有满到五个星就用灰色的星星补齐9
var offstar = lengths - result.length;
for(var i=0;i<offstar;i++){
result.push(starOff);
}
};
return result;
}
}
})
</script>
2.3 css部分
<style lang="stylus" scoped>
// @import "../../common/stylus/mixin"; .star
.star-item
display inline-block
background-repeat no-repeat
width 20px
height 20px
margin-right 22px
background-size 20px 20px
&:last-child
margin-right 0
&.on
bg-image(on') /* 这个是在公用的stylus中的方法:
*/
&.half
bg-image('half')
&.off
bg-image('off') </style>
三:具体效果:

vue 实现的评分小星星组件,包括半星的更多相关文章
- 第四节:Vue表单标签和组件的基本用法,父子组件间的通信
vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...
- 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)
昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...
- vue - vue-cli脚手架项目中组件的使用
在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还 ...
- Vue.js 相关知识(组件)
1. 组件介绍 组件(component),vue.js最强大的功能之一 作用:封装可重用的代码,通常一个组件就是一个功能体,便于在多个地方都能调用该功能体 根组件:我们实例化的Vue对象就是一个组件 ...
- Vue简单基础 + 实例 及 组件通信
vue的双向绑定原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...
- Vue之合理划分容器组件与展示组件
Vue之合理划分容器组件与展示组件 时间 2019-06-02 00:30:32 Poetry's Blog 原文 http://blog.poetries.top/2019/06/01/vue- ...
- Vue首屏性能优化组件
Vue首屏性能优化组件 简单实现一个Vue首屏性能优化组件,现代化浏览器提供了很多新接口,在不考虑IE兼容性的情况下,这些接口可以很大程度上减少编写代码的工作量以及做一些性能优化方面的事情,当然为了考 ...
- 发布自己第一个npm 组件包(基于Vue的文字跑马灯组件)
一.前言 总结下最近工作上在移动端实现的一个跑马灯效果,最终效果如下: 印象中好像HTML标签的'marquee'的直接可以实现这个效果,不过 HTML标准中已经废弃了'marquee'标签 既然HT ...
随机推荐
- JAVA关于静态static的面试题
JAVA关于静态static的面试题 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net ...
- 目标检测中的选择性搜索-selective search-没弄
https://blog.csdn.net/small_munich/article/details/79595257 https://www.cnblogs.com/zyly/p/9259392.h ...
- Spring Boot学习笔记——搭建一个最简单的hello world
使用Spring Initializer新建项目 进入https://start.spring.io/新建一个项目,并下载下来. 这就是一个最基础的spring boot项目了. 我这里是基于spri ...
- 【Leetcode_easy】637. Average of Levels in Binary Tree
problem 637. Average of Levels in Binary Tree 参考 1. Leetcode_easy_637. Average of Levels in Binary T ...
- Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理
一.基础介绍 1.简介 一个基于GIT的源码托管解决方案 基于rubyonrails开发 集成了nginx postgreSQL redis sidekiq等组件 2.安装要求 2g内存以上,有点占内 ...
- [翻译向] 当flush privileges生效时
#前言: 最近频繁在mysql权限控制这里栽跟斗,在翻阅了一些资料之后,简单地翻译一下官网关于flush privileges的描述,抛砖引玉. #翻译正文: If the mysqld serv ...
- 转:TSDF in Kinect fusion
KinectFusion中用到的TSDF Fusion 原po:https://blog.csdn.net/qq_31785865/article/details/78524429 最近在看关于稠密三 ...
- [官网]Windows 10 版本信息
对应于服务选项的 Windows 10 当前版本 https://docs.microsoft.com/zh-cn/windows/release-information/ 所有的日期都按照 ISO ...
- [转帖]Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点
Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TC ...
- [转帖]2018年SaaS行业收入结构及未来发展预测[图]
2018年SaaS行业收入结构及未来发展预测[图] http://www.chyxx.com/industry/201908/774792.html 2019年08月23日 14:34:47字号:T| ...