This JavaScript code snippet helps you to create a meter gauge. It defines a JavaScript function called “rotateDial” that updates the display of a dial and gauge with a random value. The function selects the dial and gauge elements using jQuery and applies a CSS transform to rotate the dial based on the random value. The gauge value is also updated with the random value.
Finally, the function is scheduled to be called every 2 seconds using the setInterval method.
How to Create JavaScript Meter Gauge
Create the HTML structure for meter gauge as follows:
<link href='https://fonts.googleapis.com/css?family=Josefin+Slab' rel='stylesheet' type='text/css'> <div class="gauge"> <ul class="meter"> <li class="low"></li> <li class="normal"></li> <li class="high"></li> </ul> <div class="dial"> <div class="inner"> <div class="arrow"> </div> </div> </div> <div class="value"> 0% </div> </div> <script type="text/javascript" src="https://code.jquery.com/jquery-latest.js"></script>
Style the meter gauge using the following CSS styles:
html, body
{
padding: 0;
margin: 0;
}
body,
.dial
{
background-color: #000;
overflow: hidden;
}
.gauge
{
position: absolute;
width: 500px;
height: 500px;
top: 30px;
left: 50%;
margin-left: -250px;
border-radius: 100%;
transform-origin: 50% 50%;
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-webkit-transform: rotate(0deg);
}
.meter
{
margin: 0;
padding: 0;
}
.meter > li
{
width: 250px;
height: 250px;
list-style-type: none;
position: absolute;
border-top-left-radius: 250px;
border-top-right-radius: 0px;
transform-origin: 100% 100%;;
-webkit-transform-origin: 100% 100%;;
-ms-transform-origin: 100% 100%;;
transition-property: -webkit-transform;
pointer-events: none;
}
.cd__main{
display: block !important;
}
.meter .low
{
transform: rotate(0deg); /* W3C */
-webkit-transform: rotate(0deg); /* Safari & Chrome */
-moz-transform: rotate(0deg); /* Firefox */
-ms-transform: rotate(0deg); /* Internet Explorer */
-o-transform: rotate(0deg); /* Opera */
z-index: 8;
background-color: #09B84F;
}
.meter .normal
{
transform: rotate(47deg); /* W3C */
-webkit-transform: rotate(47deg); /* Safari & Chrome */
-moz-transform: rotate(47deg); /* Firefox */
-ms-transform: rotate(47deg); /* Internet Explorer */
-o-transform: rotate(47deg); /* Opera */
z-index: 7;
background-color: #FEE62A;
}
.meter .high
{
transform: rotate(90deg); /* W3C */
-webkit-transform: rotate(90deg); /* Safari & Chrome */
-moz-transform: rotate(90deg); /* Firefox */
-ms-transform: rotate(90deg); /* Internet Explorer */
-o-transform: rotate(90deg); /* Opera */
z-index: 6;
background-color: #FA0E1C;
}
.dial,
.dial .inner
{
width: 470px;
height: 470px;
position: relative;
top: 10px;
left: 5px;
border-radius: 100%;
border-color: purple;
z-index: 10;
transition-property: -webkit-transform;
transition-duration: 1s;
transition-timing-function: ease-in-out;
transform: rotate(0deg); /* W3C */
-webkit-transform: rotate(0deg); /* Safari & Chrome */
-moz-transform: rotate(0deg); /* Firefox */
-ms-transform: rotate(0deg); /* Internet Explorer */
-o-transform: rotate(0deg); /* Opera */
}
.dial .arrow
{
width: 0;
height: 0;
position: absolute;
top: 214px;
left: 24px;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 32px solid #FFFFFF;
-webkit-transform: rotate(-88deg); /* Safari & Chrome */
-moz-transform: rotate(88deg); /* Firefox */
-ms-transform: rotate(88deg); /* Internet Explorer */
-o-transform: rotate(88deg); /* Opera */
}
.gauge .value
{
font-family: 'Josefin Slab', serif;
font-size: 50px;
color: #ffffff;
position: absolute;
top: 142px;
left: 45%;
z-index: 11;
}
Finally, add the following JavaScript function for its functionality:
var dial = $(".dial .inner");
var gauge_value = $(".gauge .value");
function rotateDial()
{
var deg = 0;
var value = Math.round(Math.random()*100);
deg = (value * 177.5) / 100;
gauge_value.html(value + "%");
dial.css({'transform': 'rotate('+deg+'deg)'});
dial.css({'-ms-transform': 'rotate('+deg+'deg)'});
dial.css({'-moz-transform': 'rotate('+deg+'deg)'});
dial.css({'-o-transform': 'rotate('+deg+'deg)'});
dial.css({'-webkit-transform': 'rotate('+deg+'deg)'});
}
setInterval(rotateDial, 2000);
That’s all! hopefully, you have successfully created the JavaScript meter gauge. If you have any questions or suggestions, feel free to comment below.
