Взгляните сюда: https://jsfiddle.net/rjq0eb3y/20/
Я использовал Vue.js, чтобы быстро смоделировать, как это будет работать, однако те же концепции могут применяться без Vue, по сути, точно так же.
JavaScript
new Vue({
el: '#app',
data: {
percentage: 0,
numberOfChecked: 0
},
methods: {
update(event) {
if (event.target.checked)
this.numberOfChecked += 1
else
this.numberOfChecked -= 1
if (this.numberOfChecked === 0)
this.percentage = 0
else
this.percentage = 100 / this.numberOfChecked
}
}
})
HTML
<script src="https://unpkg.com/vue"></script>
<div id="app">
<template v-for='id in 4'>
<input type='checkbox' v-bind:id='id' v-on:click='update' />
<label v-bind:for='id'> {{ percentage === 0 ? '' : percentage + '%' }} </label>
</template>
</div>
CSS
input:not(:checked) + label {
color: white;
user-select: none;
}