• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Vue实现星级评价效果实例详解

vue 搞代码 4年前 (2022-01-08) 20次浏览 已收录 0个评论

这篇文章主要介绍了Vue实现星级评价效果的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

我们把星级评价单独做成一个Star组件,抽离出来,其中父组件中引入(传入的是评分的值)

 <div class="score"> </div>

初始Star.vue

  <div> <div class="star"> <span class="star-item"></span></div><span>{{ score }}</span></div>

首先我们把要做星级图片用类名为star-item的span标签循环出来,星级图片有三张,全星,半星,空星

下面只罗列关键的css部分, 通过增加类区分图片

 .star-item.on { background-image: url(./img/[email protected]); } .star-item.half { background-image: url(./img/[email protected]); } .star-item.off { background-image: url(./img/[email protected]); }

接下来修改Star.vue的代码

 <div class="star"> <span class="star-item"> </span></div>

itemClasses值是通过计算属性获取的,思路:

通过computed返回一个长度为5的数组(显示5颗星)

数组的值是上述css取的不同星对应的类名,再通过绑定每一个循环添加的class,从而遍历星级。

比如举例评分:

4.7分对应的数组为[‘on’, ‘on’, ‘on’, ‘on’, ‘half’]

3.4分对应的数组为[‘on’, ‘on’, ‘on’, ‘half’, ‘half’]

JS部分的代码:

 // 星星长度 const LENGTH = 5 // 星星的状态 const CLS_ON = 'on' const CLS_HALF = 'half' const CLS_OFF = 'off' export default { name: 'Star', props: { score: Number }, computed: { itemClasses () { let result = [] let score = Math.floor(this.scor<mark>来源gaodaimacom搞#^代%!码网</mark>e * 2) / 2 // 半星 (通过跟1取余判断是否为小数) let hasDecimal = score % 1 !== 0 // 全星 (向下取整,获取全星部分) let integer = Math.floor(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) } return result } } }

itemClasses最终是返回了一个长度为5的数组,需要注意的是

let score = Math.floor(this.score * 2) / 2

半星的划分:只有当小数第一位大于或等于5才可以算为半星,否则是空星。该计算是为了小数部分>=0.5的计算结果带有小数,从而再后面跟1取余判断是否为半星。一开始有点蒙,多试几个数想想就懂了。

比如4.3分没有半星,4.5有半星出现

结果:

比如传入的值为4.7,则显示

 

总结

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

以上就是Vue实现星级评价效果实例详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Vue实现星级评价效果实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址