Progress Steps using html css javascript - codewithrandom

Progress Steps using html css javascript - complete code with demo







Progress Steps using html css javascript -  complete code with demo


Welcome🎉 to Code With Random blog. In this blog, we learn that how we how to create Progress Steps. We use HTML & CSS and javascript for these Progress Steps. Hope you enjoy our blog so let's start with a basic HTML structure for Progress Steps.

HTML code 

 <!DOCTYPE html>  
 <html lang="en">  
  <head>  
   <meta charset="UTF-8" />  
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
   <link rel="stylesheet" href="style.css" />  
   <title>Progress Steps</title>  
  </head>  
  <body>  
   <div class="container">  
    <div class="progress-container">  
     <div class="progress" id="progress"></div>  
     <div class="circle active">1</div>  
     <div class="circle">2</div>  
     <div class="circle">3</div>  
     <div class="circle">4</div>  
    </div>  
    <button class="btn" id="prev" disabled>Prev</button>  
    <button class="btn" id="next">Next</button>  
   </div>  
   <script src="script.js"></script>  
  </body>  
 </html>  
There is all HTML code for the Progress Steps. Now, you can see output without CSS, then we write CSS for our Progress Steps.
output 
Progress Steps using html css javascript -  complete code with demo

CSS Code

 @import url('https://fonts.googleapis.com/css?family=Muli&display=swap');  
 :root {  
  --line-border-fill: #3498db;  
  --line-border-empty: #e0e0e0;  
 }  
 * {  
  box-sizing: border-box;  
 }  
 body {  
  background-color: #f6f7fb;  
  font-family: 'Muli', sans-serif;  
  display: flex;  
  align-items: center;  
  justify-content: center;  
  height: 100vh;  
  overflow: hidden;  
  margin: 0;  
 }  
 .container {  
  text-align: center;  
 }  
 .progress-container {  
  display: flex;  
  justify-content: space-between;  
  position: relative;  
  margin-bottom: 30px;  
  max-width: 100%;  
  width: 350px;  
 }  
 .progress-container::before {  
  content: '';  
  background-color: var(--line-border-empty);  
  position: absolute;  
  top: 50%;  
  left: 0;  
  transform: translateY(-50%);  
  height: 4px;  
  width: 100%;  
  z-index: -1;  
 }  
 .progress {  
  background-color: var(--line-border-fill);  
  position: absolute;  
  top: 50%;  
  left: 0;  
  transform: translateY(-50%);  
  height: 4px;  
  width: 0%;  
  z-index: -1;  
  transition: 0.4s ease;  
 }  
 .circle {  
  background-color: #fff;  
  color: #999;  
  border-radius: 50%;  
  height: 30px;  
  width: 30px;  
  display: flex;  
  align-items: center;  
  justify-content: center;  
  border: 3px solid var(--line-border-empty);  
  transition: 0.4s ease;  
 }  
 .circle.active {  
  border-color: var(--line-border-fill);  
 }  
 .btn {  
  background-color: var(--line-border-fill);  
  color: #fff;  
  border: 0;  
  border-radius: 6px;  
  cursor: pointer;  
  font-family: inherit;  
  padding: 8px 30px;  
  margin: 5px;  
  font-size: 14px;  
 }  
 .btn:active {  
  transform: scale(0.98);  
 }  
 .btn:focus {  
  outline: 0;  
 }  
 .btn:disabled {  
  background-color: var(--line-border-empty);  
  cursor: not-allowed;  
 }  

Now we have completed our CSS section,  Here is our updated output CSS.

output
Progress Steps using html css javascript -  complete code with demo

Now add javascript for the step bar animation!

Javascript code

 const progress = document.getElementById('progress')  
 const prev = document.getElementById('prev')  
 const next = document.getElementById('next')  
 const circles = document.querySelectorAll('.circle')  
 let currentActive = 1  
 next.addEventListener('click', () => {  
   currentActive++  
   if(currentActive > circles.length) {  
     currentActive = circles.length  
   }  
   update()  
 })  
 prev.addEventListener('click', () => {  
   currentActive--  
   if(currentActive < 1) {  
     currentActive = 1  
   }  
   update()  
 })  
 function update() {  
   circles.forEach((circle, idx) => {  
     if(idx < currentActive) {  
       circle.classList.add('active')  
     } else {  
       circle.classList.remove('active')  
     }  
   })  
   const actives = document.querySelectorAll('.active')  
   progress.style.width = (actives.length - 1) / (circles.length - 1) * 100 + '%'  
   if(currentActive === 1) {  
     prev.disabled = true  
   } else if(currentActive === circles.length) {  
     next.disabled = true  
   } else {  
     prev.disabled = false  
     next.disabled = false  
   }  
 }  
Final output

Progress Steps using html css javascript -  complete code with demo

Now we have completed our javascript section,  Here is our updated output with javascriptHope you like the Progress Steps. you can see output video and project screenshots. See our other blogs and gain knowledge in front-end development. Thank you 🙏💕

In this post, we learn how to create Progress Steps using simple HTML & CSS, and javascript. If we made a mistake or any confusion, please drop a comment to reply or help you in easy learning.

Written by - Code With Random/Anki 

Post a Comment

Previous Post Next Post