Animated Jquery Multi-Step Form Html, Css, Javascript, Animated Login Form

Animated Jquery Multi-Step Form

This is the simple animated multistep form.

Demo

<a class=”button center” href”https://animated-jquery-multi-step-form.netlify.app/”> Demo</a>

The project

use fontawsome for icons

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" />
Html
<div class="container main-form">
        <header>Your Logo Here</header>
        <form id="form">
            <div class="form-control">
                <div class="input-field">
                    <span class="requireds">*</span>
                    <label>Enter Blah</label>
                    <input type="text" id="first_input" required>
                    <!-- <small class="errors slide-right">Error message</small> -->
                    <p id="first_input_error" class="errors slide-right">Please fill the input</p>
                </div>
                <div class="input-field">
                    <span class="requireds">*</span>
                    <label>Enter Blah</label>
                    <input class="pswrd" type="password" id="second_input" required>
                    <p id="second_input_error" class="errors slide-right">Please fill the input</p>

                </div>
                <div class="input-field">
                    <span class="requireds">*</span>
                    <label>Your Date of Birth</label> <br />
                    <div class="date-of-birth">
                        <div class="months">
                            <select id="month" required onchange="birthDay()">
                                <option value="">Month</option>
                                <option value="01">January</option>
                                <option value="02">February</option>
                                <option value="03">March</option>
                                <option value="04">April</option>
                                <option value="05">May</option>
                                <option value="06">June</option>
                                <option value="07">July</option>
                                <option value="08">August</option>
                                <option value="09">September</option>
                                <option value="10">October</option>
                                <option value="11">November</option>
                                <option value="12">December</option>
                            </select>
                        </div>
                        <div class="days">
                            <select id="day" required onchange="birthDay()">
                                <option value="">Date</option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">4</option>
                                <option value="5">5</option>
                                <option value="6">6</option>
                                <option value="7">7</option>
                                <option value="8">8</option>
                                <option value="9">9</option>
                                <option value="10">10</option>
                                <option value="11">11</option>
                                <option value="12">12</option>
                                <option value="13">13</option>
                                <option value="14">14</option>
                                <option value="15">15</option>
                                <option value="16">16</option>
                                <option value="17">17</option>
                                <option value="18">18</option>
                                <option value="19">19</option>
                                <option value="20">20</option>
                                <option value="21">21</option>
                                <option value="22">22</option>
                                <option value="23">23</option>
                                <option value="24">24</option>
                                <option value="25">25</option>
                                <option value="26">26</option>
                                <option value="27">27</option>
                                <option value="28">28</option>
                                <option value="29">29</option>
                                <option value="30">30</option>
                                <option value="31">31</option>
                            </select>
                        </div>


                        <div class="years">
                            <input type="text" id="year" class="year-input" placeholder="Year" required
                                onchange="birthDay()">
                        </div>
                        <br />



                    </div>
                    <p id="dateofbirth" class="errors slide-right">Please fill the input</p>

                </div>

                <div class="sundow">
                    <input type="checkbox">
                    <label>After Sundow</label>
                </div>
                <div class="button">
                    <div class="inner"></div>
                    <button class="submitBtn">Search</button>
                </div>
        </form>

    </div>
    </div>
    <br />
    <div class="container searching scale-up-top">
        <header>Your Logo Here</header>
        <div class="loading-btn">
            <div class="loadin-btn-text">
                <span class="text">Loading</span>
            </div>
        </div>

    </div>

Javascript

<script>
document.addEventListener('contextmenu', event => event.preventDefault());

        var sunDown = document.querySelector('.sundow')
        sunDown.style.visibility = "hidden"
        const loadingBtn = document.querySelector(".loading-btn");
        const loadingBtnText = document.querySelector(".loading-btn-text");


        function birthDay() {
            var changeMonth = document.querySelector('#month').value
            var changeDay = document.querySelector('#day').value
            var changeYear = document.querySelector('#year').value

            if (changeMonth !== "" && changeDay !== "" && changeYear !== "") {
                sunDown.style.visibility = "visible"
            }
        }

        const form = document.getElementById('form')
        const firstInput = document.getElementById('first_input');
        const secondInput = document.getElementById('second_input');
        const monthInput = document.getElementById('month');
        const dayInput = document.getElementById('day');
        const yearInput = document.getElementById('year');
        const searching = document.querySelector('.searching');
        const mainForm = document.querySelector('.main-form');
        form.addEventListener('submit', e => {
            e.preventDefault();
            checkInputs();

            console.log("form submitted")
        });

        function checkInputs() {
            // trim to remove the whitespaces
            const firstInputValue = firstInput.value;
            const secondInputValue = secondInput.value;
            const monthInputValue = monthInput.value;
            const dayInputValue = dayInput.value;
            const yearInputValue = yearInput.value;

            if (firstInputValue === '') {
                setErrorFor(firstInput, 'Please fill the input');
            }
            if (secondInputValue === '') {
                setErrorFor(secondInput, 'Please fill the input');
            }
            if (monthInputValue === '') {
                setErrorFor(monthInput, 'Please fill the input');
            }

            if (dayInputValue === '') {
                setErrorFor(dayInput, 'Password2 cannot be blank');
            }

            if (yearInputValue === '') {
                setErrorFor(yearInput, 'Password2 cannot be blank');
            }

            if (firstInputValue !== '' && secondInputValue !== '' && monthInputValue !== '' && dayInputValue !== '' && yearInputValue !== '') {
                mainForm.style.display = "none"
                searching.style.display = "block"

                loadingBtn.classList.add("progress");
                loadingBtnText.innerText = "Uploading...";

                setTimeout(() => {
                    loadingBtn.classList.remove("progress"); //remove progress after 6s
                    loadingBtnText.innerText = "Uploaded";
                }, 6000); //1000ms = 1s (6000 = 6s)

            }
        }

        function setErrorFor(input, message) {
            const errorMessage = document.getElementsByClassName('errors')
            errorMessag.innerText = message;
            errorMessag.style.display = "block"
        }




    </script>

CSS

@import url('https://fonts.googleapis.com/css?family=Montserrat:600|Noto+Sans|Open+Sans:400,700&display=swap');
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body{
  height: 100vh;
  display: flex;
  align-items: center;
  text-align: center;
  font-family: sans-serif;
  justify-content: center;
  /* background-color: #e3e3e3; */
  background-color: white;
}
.searching{
    display: none;
}
.container{
    color: white;
    position: relative;
    width: 400px;
    background-color: darkslategrey;
    /* background: #2d533bd4; */
    /* background-color: grey; */
    padding: 60px 30px;
    transform: translateZ(1px);
    -webkit-transform: translateZ(1px);
    transition: background 0.3s;
    z-index: 50;
    background-image: repeating-linear-gradient(45deg, rgb(255 255 255 / 13%) 1px, rgba(255, 255, 255, 0.03) 2px, rgb(255 255 255 / 18%) 3px, rgb(255 255 255 / 13%) 4px), -webkit-linear-gradient(125deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.2) 70%, rgb(255 255 255 / 3%) 90%);
    /* -webkit-backface-visibility: hidden; */
    backface-visibility: hidden;
}
header{
  font-size: 40px;
  margin-bottom: 60px;
  font-family: 'Montserrat', sans-serif;
}
 form .button{
    margin: 40px 0;
    position: relative;
    height: 50px;
    width: 100%;
    text-align: left;
}
.input-field{
    margin: 60px 0;
    height: 50px;
    width: 100%;
    text-align: left;
}
.input-field input,select{
  height: 100%;
  width: 100%;
  padding-left: 15px;
  font-size: 19px;
  transition: .4s;
  border: none !important;
    outline: none;
    margin-top: 5px;
}
input:focus{
    border: none !important;
    outline: none;
}
/* .input-field label, span.show{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
} */
.input-field label{
  /* left: 15px; */
  pointer-events: none;
  color: whitesmoke;
  font-size: 18px;
  transition: .4s;
}
span.show{
  right: 20px;
  color: #111;
  font-size: 14px;
  font-weight: bold;
  cursor: pointer;
  user-select: none;
  visibility: hidden;
  font-family: 'Open Sans', sans-serif;
}
/* input:valid ~ span.show{
  visibility: visible;
}
input:focus ~ label,
input:valid ~ label{
    transform: translateY(-35px);
    background: #ede8e800;
    font-size: 18px;
    color: rgb(44 38 38);
} */
.requireds{
    color: red;
}
form .button{
  margin-top: 30px;
  overflow: hidden;
  z-index: 111;
}
.button .inner{
  position: absolute;
  height: 100%;
  width: 300%;
  left: -100%;
  z-index: -1;
  transition: all .4s;
  background: -webkit-linear-gradient(right,#00dbde,#6c8a8a,#00dbde,#00dbde8a);
}
/* .first_input_error ,.second_input_error{
    display: none;
} */
.button:hover .inner{
  left: 0;
}
.button button{
  width: 100%;
  height: 100%;
  border: none;
  background: none;
  outline: none;
  color: white;
  font-size: 20px;
  cursor: pointer;
  font-family: 'Montserrat', sans-serif;
}
.container .auth{
  margin: 35px 0 20px 0;
  font-size: 19px;
  color: grey;
}
.links{
  display: flex;
  cursor: pointer;
}
small {
	
	visibility: hidden;
}
.errors{
    margin: 5px 0;
    
}
#first_input_error,#second_input_error,#dateofbirth{
    display: none;
}
.date-of-birth{
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-content: center;
}
select#month,select#day{
    height: 100%;
    width: 100%;
    padding: 8px 3px;
    font-size: 19px;
    transition: .4s;
    border: none !important;
    outline: none;
}
.months{
    margin-right: 10px;
    flex-basis: 50%;
}
.days{
    margin-right: 10px;
    flex-basis: 30%;
}
.years{
    flex-basis: 20%;
}

.loading-btn{
  position: relative;
  height: 55px;
  max-width: 300px;
  width: 100%;
  background: darkslategrey;
  border-radius: 6px;
  cursor: pointer;
  transition: all .4s;
  box-shadow: 0 5px 10px rgba(0,0,0,0.2);
  overflow: hidden;
}
.loading-btn:hover .loadin-btn-text{
  left: 0;
}
.loading-btn::before{
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  height: 100%;
  width: 100%;
  background: -webkit-linear-gradient(right,#00dbde,#6c8a8a,#00dbde,#00dbde8a);
  border-radius: 6px;
}
.loading-btn.progress::before{
  animation: progress 6s ease-in-out forwards;
}

.loading-btn .loadin-btn-text{
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.loading-btn .loadin-btn-text span{
  position: relative;
  color: #fff;
  font-size: 26px;
}
.loading-btn .loadin-btn-text span{
  font-size: 20px;
  font-weight: 400;
  margin-left: 8px;
}



/* Animation */
.slide-right {
	-webkit-animation: slide-right 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
	        animation: slide-right 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
.scale-up-top {
	-webkit-animation: scale-up-top 0.4s ease-in both;
	        animation: scale-up-top 0.4s ease-in both;
}


/**
 * ----------------------------------------
 * animation slide-right
 * ----------------------------------------
 */

 @keyframes progress {
  0%{
    left: -100%;
  }
  10%{
    left: -97%;
  }
  20%{
    left: -92%;
  }
  30%{
    left: -82%;
  }
  30%{
    left: -62%;
  }
  40%{
    left: -38%;
  }
  50%{
    left: -18%;
  }
  60%{
    left: -14%;
  }
  80%{
    left: -7%;
  }
  90%{
    left: -3%;
  }
  100%{
    left: 0%;
  }
}
 @-webkit-keyframes slide-right {
    0% {
      -webkit-transform: translateX(0);
              transform: translateX(0);
    }
    50% {
      -webkit-transform: translateX(50px);
              transform: translateX(50px);
    }
  } 

  @-webkit-keyframes scale-up-top {
    0% {
      -webkit-transform: scale(0.5);
              transform: scale(0.5);
      -webkit-transform-origin: 50% 0%;
              transform-origin: 50% 0%;
    }
    100% {
      -webkit-transform: scale(1);
              transform: scale(1);
      -webkit-transform-origin: 50% 0%;
              transform-origin: 50% 0%;
    }
  }
  

Tech Stack

HTML,CSS,JS and jQuery

Animated Jquery Multi-Step Form Html, Css, Javascript, Animated Login Form
Older post

Bookworm Light is a minimal multi-author free nextjs blog template.

This is the simple animated multistep form. Made with jquery. Animated Login Form

Newer post

Temp Mail Script, Make your own temp mail with FREE 2024

This is the simple animated multistep form. Made with jquery. Animated Login Form

Animated Jquery Multi-Step Form Html, Css, Javascript, Animated Login Form