Progress Steps javascript, HTML & CSS | codewithrandom

Progress Steps javascript, HTML & CSS- 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 how to create Progress Steps HTML CSS. We use simple HTML & CSS and a touch of javascript for these Progress Steps. Hope you enjoy our blog so let's start with a basic HTML structure for Progress Steps.

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 HTML

Progress steps -- 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 css

Now add javascript for the step bar animation!

Progress steps -- 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 javascript

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