Vue
by HikariNoSekai
HTML
<div id="app">
Version 1
<div>
Rating 1: {{rating}}
<input type="radio" name="rating" id="rating-5" v-model.number="rating" @change="setRating(5)">
<label for="rating-5"></label>
<input type="radio" name="rating" id="rating-4" v-model.number="rating"
@change="setRating(4)">
<label for="rating-4"></label>
<input type="radio" name="rating" id="rating-3" v-model.number="rating"
@change="setRating(3)">
<label for="rating-3"></label>
<input type="radio" name="rating" id="rating-2" v-model.number="rating"
@change="setRating(2)">
<label for="rating-2"></label>
<input type="radio" name="rating" id="rating-1" v-model.number="rating"
@change="setRating(1)">
<label for="rating-1"></label>
</div>
Version 2
<div>
Rating 2: {{rating2}}
<input type="radio" name="rating2" id="rating2-5" v-model.number="rating" value="5" @change="setRating2">
<label for="rating2-5"></label>
<input type="radio" name="rating2" id="rating2-4" v-model.number="rating" value="4"
@change="setRating2">
<label for="rating2-4"></label>
<input type="radio" name="rating2" id="rating2-3" v-model.number="rating" value="3"
@change="setRating2">
<label for="rating2-3"></label>
<input type="radio" name="rating2" id="rating2-2" v-model.number="rating" value="2"
@change="setRating2">
<label for="rating2-2"></label>
<input type="radio" name="rating2" id="rating2-1" v-model.number="rating" value="1"
@change="setRating2">
<label for="rating2-1"></label>
</div>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
new Vue({
el: "#app",
data: {
rating: '',
rating2: ''
},
methods: {
setRating(rate) {
this.rating = rate;
},
setRating2({value} = event.target){
this.rating2 = value;
}
}
})