Home >Web Front-end >JS Tutorial >vue2.0 front-end star rating function component implementation code
This article mainly shares with you how to implement the star rating component in vue 2.0. The code is very simple, let’s take a look! Hope it helps everyone.
Without further ado, I will post the code directly for you. The specific code is as follows:
<template id="pingJia"> <p> <ul> <li :class="{li1:1,bg1:index%2}" v-for="(value,index) in list"><span class="stu_span1"> {{value.classs.major}}</span> <span class="stu_teacher">任课老师:{{value.classs.teacher}}</span> <p v-for="(item,index1) in value.classs.zh" class="stu_p" :id="index"> <span class="stu_title">{{item.title}}</span> <span class="stu_bgstar" :id="index1"> <span class="stu_bgstar1" :title="value.classs.title1"></span> <span class="stu_bgstar1" :title="value.classs.title1"></span> <span class="stu_bgstar1" :title="value.classs.title1"></span> <span class="stu_bgstar1" :title="value.classs.title1"></span> <span class="stu_bgstar1" :title="value.classs.title1"></span> </span> <span class="stu_bgstar2" @mousemove="pingjia($event)" :title="value.classs.title1" @click="pingjia1($event)" @mouseleave="pingjia2($event)"></span> <span>{{item.lastD}}</span> </p> </li> <button class="but1" @click="pingjia3($event)">评价</button> </ul> </p> </template> <style> .li1{ width: 1200px; /*height: 330px;*/ color: #f60; border: 1px solid #000000; font-size: 20px; line-height: 50px; } .bg1{ background: #00A2D4; } .but1{ width: 200px; height: 40px; font-size: 25px; float: right; margin: 5px 5px; } .stu_span1{ float: left; margin: 0px 25px; } .stu_teacher{ float: left; } .stu_p{ float: left; width: 1000px; height: 50px; } .stu_title{ float: left; } .stu_bgstar{ width: 250px; height: 50px; float: left; margin-left:500px; /*background: url(../image/star.png);*/ background-size: 50px 50px; } .stu_bgstar1{ width: 50px; height: 50px; float: left; background: url(../image/star.png); background-size: 50px 50px; margin-left: 0px; } .stu_bgstar2{ width: 250px; height: 50px; float: left; /*background: url(../image/star.png);*/ /*background-size: 50px 50px;*/ margin-left: -250px; opacity: 0; } .stu_bgstar3{ background: url(../image/star1.png); background-size: 50px 50px; } .stu_li_text{ width: 95%; height: 100px; border: 1px solid #000000; resize: none; } </style> <script> export default{ data(){ return{ list:[{classs:{major:"数学",teacher:"郑...0",title1:0, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}, {classs:{major:"语文",teacher:"郑...1",title1:1, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}, {classs:{major:"英语",teacher:"郑...2",title1:2, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}, {classs:{major:"数学",teacher:"郑...3",title1:3, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}, {classs:{major:"数学",teacher:"郑...4",title1:4, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}, {classs:{major:"数学",teacher:"郑...5",title1:5, zh:[{title:"课堂氛围",d:0,lastD:0}, {title:"老师水平",d:0,lastD:0},{title:"课后布置",d:0,lastD:0} ],text:"好"}}] } }, methods:{ pingjia($event){ let wei = $event.target.parentNode.id; let b = $event.target.previousElementSibling.id; let a = parseInt($event.offsetX/250*100); let c = parseFloat($event.offsetX/50); this.list[wei].classs.zh[b].d = Math.ceil(c); this.list[wei].classs.title1 = a; for(let i = 0;i<5;i++){ if(i<this.list[wei].classs.zh[b].d){ $event.target.previousElementSibling.children[i].classList.add('stu_bgstar3'); } else{ $event.target.previousElementSibling.children[i].classList.remove('stu_bgstar3'); } } if(a==0){ $event.target.previousElementSibling.children[0].classList.remove('stu_bgstar3'); } }, pingjia1($event){ let wei = $event.target.parentNode.id; let b = $event.target.previousElementSibling.id; this.list[wei].classs.zh[b].lastD = this.list[wei].classs.zh[b].d; }, pingjia2($event){ let wei = $event.target.parentNode.id; let b = $event.target.previousElementSibling.id; for(let i = 0;i<5;i++){ if(i<this.list[wei].classs.zh[b].lastD){ $event.target.previousElementSibling.children[i].classList.add('stu_bgstar3'); } else{ $event.target.previousElementSibling.children[i].classList.remove('stu_bgstar3'); } } }, pingjia3($event){ console.log(this.list[0].classs.text); } } } </script>
Related recommendations:
Code sharing for the implementation of star rating effect in JavaScript
jquery implements a function similar to Taobao star rating with screenshots_jquery
js implements mall star rating Effect_javascript skills
The above is the detailed content of vue2.0 front-end star rating function component implementation code. For more information, please follow other related articles on the PHP Chinese website!