前端必学!vue实现打星评分

vue实现打星评分功能

//首先引用vue.js
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>

然后设置vue

<script>
    let vm = new Vue({
        el: '#app',
        data() {
            return {
                score1:2,
                score:2,
                count:10
            }
        },
    })
</script>

开始设置星星显示

<div id="app">
	//通过v-for的循环,显示出了10个星星   PS(我用的是iconfont,大家使用前记得要link引入)
    <i v-for="order in count" class="iconfont iconxingxing1" aria-hidden="true"></i>
</div>

在这里插入图片描述
这个时候只是循环出了指定个数count的星星

//修改i标签 @mouseenter当鼠标触碰是,将score1更改为鼠标当前所在的order
//再更改class,添加一个绑定class,进行判断,order小于等于score1的时候,显示iconshoucang1的图标,否则反之
//这样,触碰时更改score1,触碰到底几颗星,从左开始第一颗到鼠标触碰的那一刻变成红色的星
<i v-for="order in count" class="iconfont" @mouseenter="score1=order"
 :class="order<=score1?'iconshoucang1':'iconxingxing1'" ></i>

在这里插入图片描述
但是这时有问题,鼠标只是触碰到,但是并没有点击,星星就变了,所以得加以下代码

//@mouseleave 鼠标离开时score1的值改为score,这时就体现了score的作用,在只是触碰没点击时,星星变成之前的数量
<i v-for="order in count" class="iconfont" @mouseenter="score1=order"
 :class="order<=score1?'iconshoucang1':'iconxingxing1'" 
 @mouseleave="score1 = score"></i>

再加一个点击事件,就完成了

//@click点击后score的值变为order
<i v-for="order in count" class="iconfont" @mouseenter="score1=order"
 :class="order<=score1?'iconshoucang1':'iconxingxing1'" 
 @mouseleave="score1 = score"  @click="score=order"></i>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值