Home > Article > Web Front-end > How to implement front-end star rating function component using vue2.0
This article introduces you to the front-end star rating functional component of vue2.0 through example code. It is very good and has reference value. Friends who need it can refer to it.
The following will share with you the star rating of vue 2.0. Component, the code is very simple, let’s take a look!
No more nonsense, 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>
The above is what I compiled for you. I hope it will be helpful to you in the future.
Related articles:
How to implement mouse-responsive Taobao animation effect in jQuery
How to implement vue2.0 responsiveness (details Tutorial)
Mouse response buffer animation effect implemented by jQuery
The above is the detailed content of How to implement front-end star rating function component using vue2.0. For more information, please follow other related articles on the PHP Chinese website!