この記事では、サンプル コードを通じて vue2.0 のフロントエンドの星評価コンポーネントを紹介します。これは非常に優れており、必要な方は参考にしてください。
ここで星評価を共有します。 vue 2.0 のコンポーネントです。コードは非常に簡単です。見てみましょう。
これ以上ナンセンスではありません。具体的なコードは次のとおりです。
<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>
上記は私があなたのために役立つことを願っています。
関連記事:
jQuery でマウス応答 Taobao アニメーション効果を実装する方法
vue2.0 応答性を実装する方法 (詳細なチュートリアル)
jQuery で実装されたマウス応答バッファ アニメーション効果
以上がvue2.0を使用したフロントエンド星評価関数コンポーネントの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。