JSFiddle - React, Tailwind, and code Playground
by ecropolis
HTML
<div id="insert-here">
</div>
SCSS
body {
font-size: 1rem;
font-family: "helvetica-neue-light", Helvetica Neue, Helvetica, Arial, sans-serif !important;
color: #333;
padding: 0;
}
.fit-rating {
list-style: none;
font-size: .75em;
width: 230px;
margin: 20px auto;
position: relative;
&__fit-scale {
padding-right: 30px;
margin: 0;
}
&__fit-scale ul {
list-style: none;
font-size: 0;
padding: 0;
margin: 0;
}
&__fit-head {
display: flex;
margin-bottom: 5px;
padding: 0 2px;
}
&__fit-label {
width: auto;
font-weight: 600;
padding-right: 8px;
}
&__fit-head div {
line-height: 1em;
}
&__fit-control {
flex: 1;
text-align: center;
}
&__fit-node {
display: inline-block;
list-style-type: none;
height: 9px;
width: 18%;
padding: 2px;
margin: 0;
text-align: center;
}
&__fit-bar {
background: #CCC;
height: 100%;
width: auto;
display:block;
min-height: 5%;
transition:height 0.4s ease-in;
}
&__fit-active &__fit-bar {
background: #F96302;
}
&__fit-size-labels {
display: flex;
padding: 0 30px 0 0;
margin: 6px 0;
span {
display: block;
flex: 1;
font-size: .6em;
}
}
}
JavaScript
showFitAvg = function(avg, ele) {
var template = '<div class="fit-rating"><div class="fit-rating__fit-head"><div class="fit-rating__fit-label">Fit</div></div><div class="fit-rating__fit-scale"><ul><li class="fit-rating__fit-node fit-rating__fit-avg-1"><span class="fit-rating__fit-bar"></span></li><li class="fit-rating__fit-node fit-rating__fit-avg-2"><span class="fit-rating__fit-bar"></span></li><li class="fit-rating__fit-node fit-rating__fit-avg-3"><span class="fit-rating__fit-bar"></span></li><li class="fit-rating__fit-node fit-rating__fit-avg-4"><span class="fit-rating__fit-bar"></span></li><li class="fit-rating__fit-node fit-rating__fit-avg-5"><span class="fit-rating__fit-bar"></span></li></ul></div><div class="fit-rating__fit-size-labels"><span style="text-align:left;">Smaller</span><span style="text-align:center;">Just Right</span><span style="text-align:right;">Larger</span></div></div>';
var $html = $($.parseHTML(template));
$html.find('.fit-rating__fit-avg-' + avg)
.addClass('fit-rating__fit-active');
$html.appendTo(ele);
}
showFitAvg(4,'#insert-here');