ANIMATED DOWNLOAD BUTTON USING HTML CSS AND JAVASCRIPT

AYUSH KUSHWAHA
1
ANIMATED DOWNLOAD BUTTON USING HTML CSS AND JAVASCRIPT

Animated download button using Html Css And Js.

Make a index.html file and paste the given below code


    

 

        <!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />

  <link rel="stylesheet" href="style.css">

  <title>Download Button</title>

</head>

<body>

  <b class="btn">

    <div class="completed">

      <i class="fas fa-check-circle"></i>

      <span>Completed</span>

    </div>

    <div class="download">

      <i class="fas fa-download"></i>

      <span>Download</span>

    </div>

  </b>

  <script>

    const btn = document.querySelector('.btn')

    btn.addEventListener('click', () => {

      btn.classList.add('active')

      setTimeout(() => {

        btn.classList.remove('active')

      }, 13000);

    })

  </script>

</body>

 </html>

   

    

  
make a style.css file and paste the given below code

    

    @import url('https://fonts.googleapis.com/css2?family=Raleway:wght@100;200;300;400;500;600;700;800;900&display=swap');

*

{

  margin: 0;

  padding: 0;

  box-sizing: border-box;

  font-family: 'Raleway', Arial, sans-serif;

}

body

{

  display: flex;

  justify-content: center;

  align-items: center;

  text-align: center;

  background: #222;

  min-height: 100vh;

}

.btn

{

  position: relative;

  width: 200px;

  height: 70px;

  background: #444;

  color: #999;

  font-size: 20px;

  font-weight: 700;

  border-radius: 50px;

  cursor: pointer;

  text-decoration: none;

  transition: 0.8s;

  transition-delay: 0.5s;

  overflow: hidden;

}

.btn .fas

{

  margin-right: 8px;

}

.btn .download

{

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%,-50%);

  white-space: nowrap;

  transition: 0.3s;

}

.btn.active .download

{

  transform: translate(-50%,60px);

  animation: bottom_top 0.5s linear forwards;

  animation-delay: 12s;

}

.btn .completed

{

  position: absolute;

  top: 0%;

  left: 50%;

  transform: translate(-50%,-60px);

  white-space: nowrap;

  color: #222;

}

.btn.active .completed

{

  animation: top_bottom 1.3s linear forwards;

  animation-delay: 6.5s;

}

.btn.active

{

  width: 600px;

  height: 15px;

  animation: btn_width 4.5s linear forwards;

  animation-delay: 5s;

}

.btn.active::before

{

  content: '';

  position: absolute;

  top: 0;

  left: 0;

  width: 0;

  height: 100%;

  background: #5c5cff;

  animation: before_active 10s linear forwards;

  animation-delay: 1.5s;

}

.btn.active::after

{

  content: '\f00c';

  position: absolute;

  top: 50%;

  left: 50%;

  font-family: "Font Awesome 5 Free";

  color: #222;

  transform: translate(-50%,-50%) scale(0);

  transition: 0.3s;

  animation: check_scale 2s linear forwards;

  animation-delay: 8.5s;

}

@keyframes before_active

{

  0%

  {

    width: 0%;

    height: 100%;

  }

  30%,95%

  {

    width: 100%;

    height: 100%;

  }

  100%

  {

    width: 100%;

    height: 0%;

  }

}

@keyframes btn_width

{

  0%

  {

    width: 600px;

    height: 15px;

  }

  20%,70%

  {

    width: 200px;

    height: 70px;

  }

  80%,90%

  {

    width: 100px;

    height: 100px;

  }

  100%

  {

    width: 200px;

    height: 70px;

  }

}

@keyframes top_bottom

{

  0%

  {

    transform: translate(-50%,-60px);

  }

  20%,90%

  {

    top: 50%;

    transform: translate(-50%,-50%);

  }

  100%

  {

    top: 120%;

    transform: translate(-50%,-50%);

  }

}

@keyframes bottom_top

{

  0%

  {

    transform: translate(-50%,60px);

  }

  100%

  {

    transform: translate(-50%,-50%);

  }

}

@keyframes check_scale

{

  0%

  {

    transform: translate(-50%,-50%) scale(0);

  }

  20%,90%

  {

    transform: translate(-50%,-50%) scale(1.3);

  }

  100%

  {

    transform: translate(-50%,100px) scale(1.3);

  }

}

    

  

Output

Tags

Post a Comment

1Comments

Post a Comment