"Animated Login And Sign Up Forms"
Bootstrap 4.1.1 Snippet by Disha95

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Animated Form</title> <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="./style.css"> </head> <body> <section class="forms-section"> <h1 class="section-title">Animated Login And Sign Up Forms</h1> <div class="forms"> <div class="form-wrapper is-active"> <button type="button" class="switcher switcher-login"> Login <span class="underline"></span> </button> <form class="form form-login"> <fieldset> <legend>Please, enter your email and password for login.</legend> <div class="input-block"> <label for="login-email">E-mail</label> <input id="login-email" type="email" required> </div> <div class="input-block"> <label for="login-password">Password</label> <input id="login-password" type="password" required> </div> </fieldset> <button type="submit" class="btn-login">Login</button> </form> </div> <div class="form-wrapper"> <button type="button" class="switcher switcher-signup"> Sign Up <span class="underline"></span> </button> <form class="form form-signup"> <fieldset> <legend>Please, enter your email, password and password confirmation for sign up.</legend> <div class="input-block"> <label for="signup-email">E-mail</label> <input id="signup-email" type="email" required> </div> <div class="input-block"> <label for="signup-password">Password</label> <input id="signup-password" type="password" required> </div> <div class="input-block"> <label for="signup-password-confirm">Confirm password</label> <input id="signup-password-confirm" type="password" required> </div> </fieldset> <button type="submit" class="btn-signup">Continue</button> </form> </div> </div> </section> <!-- partial --> <script> const switchers = [...document.querySelectorAll('.switcher')] switchers.forEach(item => { item.addEventListener('click', function() { switchers.forEach(item => item.parentElement.classList.remove('is-active')) this.parentElement.classList.add('is-active') }) }) </script> </body> </html>
*, *::before, *::after { box-sizing: border-box; } body { margin: 0; font-family: Roboto, -apple-system, 'Helvetica Neue', 'Segoe UI', Arial, sans-serif; /* background: #3b4465; */ background: #000000; height: 100vh; display: flex; justify-content: center; } .forms-section { display: flex; flex-direction: column; justify-content: center; align-items: center; } .section-title { font-size: 32px; letter-spacing: 1px; color: #fff; } .forms { display: flex; align-items: flex-start; margin-top: 30px; } .form-wrapper { animation: hideLayer .3s ease-out forwards; } .form-wrapper.is-active { animation: showLayer .3s ease-in forwards; } @keyframes showLayer { 50% { z-index: 1; } 100% { z-index: 1; } } @keyframes hideLayer { 0% { z-index: 1; } 49.999% { z-index: 1; } } .switcher { position: relative; cursor: pointer; display: block; margin-right: auto; margin-left: auto; padding: 0; text-transform: uppercase; font-family: inherit; font-size: 16px; letter-spacing: .5px; color: #999; background-color: transparent; border: none; outline: none; transform: translateX(0); transition: all .3s ease-out; } .form-wrapper.is-active .switcher-login { color: #fff; transform: translateX(90px); } .form-wrapper.is-active .switcher-signup { color: #fff; transform: translateX(-90px); } .underline { position: absolute; bottom: -5px; left: 0; overflow: hidden; pointer-events: none; width: 100%; height: 2px; } .underline::before { content: ''; position: absolute; top: 0; left: inherit; display: block; width: inherit; height: inherit; background-color: currentColor; transition: transform .2s ease-out; } .switcher-login .underline::before { transform: translateX(101%); } .switcher-signup .underline::before { transform: translateX(-101%); } .form-wrapper.is-active .underline::before { transform: translateX(0); } .form { overflow: hidden; min-width: 260px; margin-top: 50px; padding: 30px 25px; border-radius: 5px; transform-origin: top; } .form-login { animation: hideLogin .3s ease-out forwards; } .form-wrapper.is-active .form-login { animation: showLogin .3s ease-in forwards; } @keyframes showLogin { 0% { background: #d7e7f1; transform: translate(40%, 10px); } 50% { transform: translate(0, 0); } 100% { background-color: #fff; transform: translate(35%, -20px); } } @keyframes hideLogin { 0% { background-color: #fff; transform: translate(35%, -20px); } 50% { transform: translate(0, 0); } 100% { background: #d7e7f1; transform: translate(40%, 10px); } } .form-signup { animation: hideSignup .3s ease-out forwards; } .form-wrapper.is-active .form-signup { animation: showSignup .3s ease-in forwards; } @keyframes showSignup { 0% { background: #d7e7f1; transform: translate(-40%, 10px) scaleY(.8); } 50% { transform: translate(0, 0) scaleY(.8); } 100% { background-color: #fff; transform: translate(-35%, -20px) scaleY(1); } } @keyframes hideSignup { 0% { background-color: #fff; transform: translate(-35%, -20px) scaleY(1); } 50% { transform: translate(0, 0) scaleY(.8); } 100% { background: #d7e7f1; transform: translate(-40%, 10px) scaleY(.8); } } .form fieldset { position: relative; opacity: 0; margin: 0; padding: 0; border: 0; transition: all .3s ease-out; } .form-login fieldset { transform: translateX(-50%); } .form-signup fieldset { transform: translateX(50%); } .form-wrapper.is-active fieldset { opacity: 1; transform: translateX(0); transition: opacity .4s ease-in, transform .35s ease-in; } .form legend { position: absolute; overflow: hidden; width: 1px; height: 1px; clip: rect(0 0 0 0); } .input-block { margin-bottom: 20px; } .input-block label { font-size: 14px; color: #a1b4b4; } .input-block input { display: block; width: 100%; margin-top: 8px; padding-right: 15px; padding-left: 15px; font-size: 16px; line-height: 40px; color: #3b4465; background: #eef9fe; border: 1px solid #cddbef; border-radius: 2px; } .form [type='submit'] { opacity: 0; display: block; min-width: 120px; margin: 30px auto 10px; font-size: 18px; line-height: 40px; border-radius: 25px; border: none; transition: all .3s ease-out; } .form-wrapper.is-active .form [type='submit'] { opacity: 1; transform: translateX(0); transition: all .4s ease-in; } .btn-login { color: #fbfdff; background: #a7e245; transform: translateX(-30%); } .btn-signup { color: #a7e245; background: #fbfdff; box-shadow: inset 0 0 0 2px #a7e245; transform: translateX(30%); }

Related: See More


Questions / Comments: