这篇文章给大家分享的是有关js评分组件怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联主营祁县网站建设的网络公司,主营网站建设方案,重庆APP软件开发,祁县h5微信小程序搭建,祁县网站营销推广欢迎祁县等地区企业咨询
1.html部分
解释
1.在大的div里绑定starType是因为在整个App中,有多个评分组件,而它们的大小不一样,所以根据大小动态的绑定class.
同样的原理,在上一节header组件开发中也有介绍,但直到写到这里我开始渐渐明白vue.js中:class的意义。以前我想既然可以直接添加class,为什么要用绑定class来多此一举。现在我明白的,基础的样式设定,直接添加class就可以了,但是有时候涉及到根据不同的状态有不同的样式时,就要用绑定class了。
2.v-for 这里我们没有写5个span,而是遍历itemClasses,这是vue.js中的一种常用方法。既减少了代码,而且动态获取数据。
2.js部分
1. 得到评分数据
像上一节一样,我们通过props来接收数据。我们要接收的是两个number类型的数据,一个是星星的尺寸,一个是分数。
props: { size:{ type:Number }, score:{ type:Number } }
2.属性的计算
1).接收size动态绑定不同的class
starType() { return 'star-'+this.size; } .star-48 { width: 20px; height: 20px; margin-right: 22px; background-size: 20px 20px; } .star-36 { width: 15px; height: 15px; margin-right: 6px; background-size: 15px 15px; } .star-24 { width: 10px; height: 10px; margin-right: 3px; background-size: 10px 10px; }
2). 通过计算确定添加全星半星和无星
const LENGTH = 5; const CLS_ON = 'on'; const CLS_HALF = 'half'; const CLS_OFF = 'off'; 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这段代码的思路是:创建一个数组储存星星,判断分数是否在.5以上,将分数取整,有多少分push几个on星星进去,有.5以上,push一个half,然后push进off直到长度达到5。
3).css部分
以star-48的尺寸为例.star-48 .on { background-image: url('star48_on@2x.png') } .star-48 .half { background-image: url('star48_half@2x.png') } .star-48 .off { background-image: url('star48_off@2x.png') }4.完整代码
感谢各位的阅读!关于“js评分组件怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
当前文章:js评分组件怎么用
转载注明:http://lswzjz.com/article/pcjpic.html