日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue实现星级评价效果

發(fā)布時間:2023/12/13 vue 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue实现星级评价效果 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

希望對你們有用,已經(jīng)自己試過可以的才發(fā)布出來的

效果如下:

html:

<template>
<div class="evaStar">
<ul class="star">
<li v-for="(itemClass,index) in itemClasses" :class="itemClass" class="star-item" @click="stars(index)" track-by="index"></li><!--性能優(yōu)化 track-by 數(shù)據(jù)不改變時不會重新渲染-->
</ul>
</div>
</template>

?

JS:

<script>
export default{
data(){
return{
score: 4,
}
},
computed:{ //計算屬性
itemClasses(){
let result = []; // 返回的是一個數(shù)組,用來遍歷輸出星星
let score = Math.floor(this.score * 2 ) / 2; // 計算所有星星的數(shù)量
let hasDecimal = score % 1 !== 0; // 非整數(shù)星星判斷
let integer = Math.floor(score); // 整數(shù)星星判斷
for(let i=0;i<integer;i++){ // 整數(shù)星星使用on
result.push("on"); // 一個整數(shù)星星就push一個CLS_ON到數(shù)組
}
if(hasDecimal){ // 非整數(shù)星星使用half
result.push("half"); // 類似

}
while(result.length < 5){// 余下的用無星星補全,使用off
result.push("off");
}
return result;
}
},
methods:{
stars:function(index){
this.score = index + 1
}
}

}
</script>

?

CSS:

<style>
.evaStar{
float: right;
padding-top: .34rem;
}
.star{
font-size: 0;
}
.star-item{
display: inline-block;
background-repeat: no-repeat;
width: .6rem;
height: .6rem;
margin-left: .27rem;
background-size: 100%;
}
.star-item.on{
background-image: url(../assets/images/on.png);
}
.star-item.half{
background-image: url(../assets/images/half.png);
}
.star-item.off{
background-image: url(../assets/images/off.png);
}
</style>

轉(zhuǎn)載于:https://www.cnblogs.com/mei1234/p/8205640.html

總結(jié)

以上是生活随笔為你收集整理的vue实现星级评价效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。