JavaScript Meter Gauge

JavaScript Meter Gauge
Project: Gauge meter
Author: Daniel Lazarovici
Edit Online: View on CodePen
License: MIT

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.

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *