Madras Academy
Home / Blog / html / Create an Interactive Progress Wheel with HTML, CSS & JavaScript
html

Create an Interactive Progress Wheel with HTML, CSS & JavaScript

March 1, 2025 admin 3 min read

Want to add a dynamic progress wheel to your website? This interactive progress indicator updates in real time as you adjust a slider, providing a visually engaging way to represent progress.

Using HTML, CSS, and JavaScript, we’ll build a circular progress bar that dynamically updates based on user input. This is perfect for dashboards, loading indicators, and interactive UI components!


What You’ll Learn

✅ HTML structure for the progress wheel and slider 📄
✅ CSS conic gradients to create a modern circular progress effect 🎨
✅ JavaScript logic to sync slider input with the progress display 🔄
✅ Dynamic animations to enhance user experience 🌟
✅ Customization tips to match your website’s design 🛠️


Step 1: Setting Up the HTML

First, create a simple HTML structure for the progress wheel and slider.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Progress Wheel</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Interactive Progress Wheel</h1>
<div class="progress-container" id="progress-container">
<div class="progress-text" id="progress-text">0%</div>
</div>

<div class="slider-container">
<label for="progress-slider">Adjust Progress:</label>
<input type="range" id="progress-slider" min="0" max="100" value="0">
</div>

<script src="script.js"></script>
</body>
</html>

✔ Includes a circular progress indicator
✔ Adds a slider to adjust the progress dynamically
✔ Links external CSS and JavaScript for better organization


Step 2: Styling with CSS

Now, let’s apply CSS styles to create a beautiful progress wheel effect.

/* General Styling */
body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}

/* Heading */
h1 {
font-size: 28px;
color: #333;
margin-bottom: 30px;
}

/* Circular Progress Container */
.progress-container {
position: relative;
width: 200px;
height: 200px;
background: conic-gradient(#4caf50 0% 0%, #ddd 0% 100%);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1);
}

/* Progress Percentage Text */
.progress-text {
position: absolute;
font-size: 24px;
font-weight: bold;
color: #333;
}

/* Slider Container */
.slider-container {
margin-top: 50px;
text-align: center;
}

input[type="range"] {
width: 100%;
max-width: 300px;
}

✔ Uses conic-gradient for a smooth circular progress effect
✔ Centers the progress percentage inside the wheel
✔ Adds a stylish shadow effect for better visibility


Step 3: Adding JavaScript for Interactivity

Now, we’ll use JavaScript to dynamically update the progress wheel based on the slider value.

const progressContainer = document.getElementById("progress-container");
const progressText = document.getElementById("progress-text");
const progressSlider = document.getElementById("progress-slider");

progressSlider.addEventListener("input", (e) => {
const progressValue = e.target.value;
progressText.textContent = `${progressValue}%`;
progressContainer.style.background = `conic-gradient(
#4caf50 ${progressValue * 3.6}deg,
#ddd ${progressValue * 3.6}deg
)`;
});

✔ Tracks the slider value and updates the progress text
✔ Dynamically changes the circular gradient to reflect progress
✔ Creates a smooth and interactive user experience


How It Works 🎥

🎡 The circular progress wheel updates in real time
🖱️ Users can adjust the slider to change the progress value
🔄 A conic gradient visually represents the progress


Customization Tips

🎨 Change the progress color:
Modify #4caf50 in conic-gradient to your preferred color.

⚡ Adjust the progress speed:
Use transition: background 0.3s ease-out; in CSS for smoother updates.

🔄 Increase or decrease size:
Modify .progress-container width & height for different sizes.

📊 Use for different applications:
Customize this effect for loading indicators, skill meters, or fitness tracking.


Final Output: A Stunning Interactive Progress Wheel!

This effect enhances user engagement and adds a modern UI element to your website. Perfect for dashboards, progress tracking, and loading animations! 🚀


Watch the Full Video Tutorial 🎥

Follow along with a step-by-step video guide!


Download the Full Code

Get the complete source code on GitHub:

🔗 GitHub – Interactive Progress Wheel


Conclusion

In this tutorial, you learned how to create a smooth, interactive circular progress wheel using HTML, CSS, and JavaScript.

💡 Next Steps:
✔ Experiment with different color schemes 🎨
✔ Use the effect for progress tracking, skill bars, or loading screens 🚀
✔ Combine with other UI animations for a unique experience ✨


Did you enjoy this tutorial?

💡 Like this post
💬 Comment your thoughts
🔔 Subscribe for more web development tutorials!

🚀 Happy Coding! 🎡💻✨

RECOMMENDED COURSES

Continue learning with Madras Academy.

Here are a few courses selected from our current catalog.

Browse All Courses
JAVA

Java Programming & OOP

Learn Java from fundamentals through object-oriented design, collections, exceptions and database connectivity.

10 Weeks Beginner → Intermediate
JavaOOPCollections
W WhatsApp