login form (inline css and javascript animation) - created for meca originally
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="styles.css">
<style>
body{font-family:"FranklinGothicHeavy",Arial,sans-serif;height:100%;background-size:cover}@keyframes spinner{0%{transform:rotateZ(0deg)}100%{transform:rotateZ(359deg)}}*{box-sizing:border-box}.wrapper{display:flex;align-items:center;flex-direction:column;justify-content:center;width:100%;min-height:100%;padding:0;background:rgba(162,166,169,0.85)}.ralogin{border-radius:2px 2px 5px 5px;padding:10px 25px 20px 25px;width:100%;margin:0 auto;max-width:480px;background:#e8e8e8;position:relative;padding-bottom:100px;box-shadow:0 1px 5px rgba(0,0,0,0.3)}.ralogin.loading button{max-height:100%;padding-top:50px}.ralogin.loading button .spinner{opacity:1;top:69%}.ralogin.ok button{background-color:#aa2966}.ralogin.ok button .spinner{border-radius:0;border-top-color:transparent;border-right-color:transparent;height:20px;animation:none;transform:rotateZ(-45deg)}.ralogin input{//display:block;padding:19px 10px!important;margin-bottom:10px;width:99%;border:1px solid #ddd;transition:border-width .2s ease;border-radius:2px;color:#823f8f;font-size:14px;border-radius:4px;display:inline-block}.ralogin input+i.fa{color:#fff;font-size:1.5em;position:absolute;margin-top:-52px;opacity:0;left:0;transition:all .1s ease-in}.ralogin input:focus,.ralogin input:active{outline:0;color:#823f8f;border-color:#823f8f;border-left-width:45px;padding:17px 10px;font-size:14px}.ralogin input:focus+i.fa,.ralogin input:active+i.fa{opacity:1;left:38px;transition:all .25s ease-out}#mykey{left:35px}.ralogin a{font-size:14px;color:#823f8f;text-decoration:none}.ralogin .title{color:#823f90;font-size:2.5em;font-weight:bold;margin:10px 0 30px 0;border-bottom:1px solid #eee;padding-bottom:0;letter-spacing:-1px;padding-left:.15em}.ralogin button{width:100%;height:100%;padding:10px 10px;background:#d45c95;color:#fff;display:block;border:0;margin-top:20px;position:absolute;left:0;bottom:0;max-height:60px;border-radius:0 0 2px 2px;transform:rotateZ(0deg);transition:all .1s ease-out;border-bottom-width:7px;font-variant:all-small-caps;font-size:2em;cursor:pointer}.ralogin button .spinner{display:block;width:40px;height:40px;position:absolute;border:4px solid #fff;border-top-color:rgba(255,255,255,0.3);border-radius:100%;left:50%;top:0;opacity:0;margin-left:-20px;margin-top:-20px;animation:spinner .6s infinite linear;transition:top .3s .3s ease,opacity .3s .3s ease,border-radius .3s ease;box-shadow:0 1px 0 rgba(0,0,0,0.2)}.ralogin:not(.loading) button:hover{box-shadow:0 1px 3px #d55b95}.ralogin:not(.loading) button:focus{border-bottom-width:4px;outline:0}span.state:focus,span.state:active{outline:0}form,button{outline:0}.modal-ct{border-radius:.6rem;height:auto;left:50%;max-height:52rem;max-width:45rem;min-width:30rem;top:30%}.btn-secondary{color:#fff;font-family:"FranklinGothicHeavy",Arial,sans-serif;font-size:2rem;padding:.7rem 1.5rem;text-transform:uppercase;width:50%}.logino{position:static!important;width:33%!important;font-size:1.5em!important;padding:5px 5px!important;max-height:40px!important;display:inline-block!important;margin:0!important}.rajoinbutton{width:100%;margin:0 auto;max-height:40px;overflow:hidden;text-align:center;margin-top:2em}.rainput-username label,.rainput-password label{color:#823f8f;padding:.5em 0 .15em .25em;display:block}.rainput-username input::placeholder,.rainput-password input::placeholder{color:#823f8f;font-size:14px;font-style:italic}form.ralogin p{font-size:14px;color:#616161;padding:.5em .5em;margin-bottom:0}form.ralogin .rahelp p{font-size:14px;color:#616161;padding:.5em .5em;margin-top:0}form.ralogin p a.raclickhere{text-decoration:underline}.propa img{max-width:250px;margin:0 auto;display:block;border-radius:5px;position:fixed;top:8%;left:25%}.propa p{font-size:16px!important;line-height:24px!important;color:#fafafa!important;font-variant:initial!important;padding:0 2em!important}#rawelcome{font-size:3em;color:#f1f1f1;margin-bottom:.5em;display:inline-block}#rawelcomeuser{font-size:3em;color:#f1f1f1;margin-top:2em;margin-bottom:.5em;display:inline-block;line-height:50px}#rasuser{font-size:.9em}
</style>
</head>
<body>
<div class="wrapper">
<div class="modal-ct login-ct">
<form class="ralogin" maction="/api/Login" data-inherit-redirect-url="true" data-message-not-found="Incorrect username or password" data-return-url="" data-validate="True" method="post" data-di-form-track="">
<p class="title">Sign In</p>
<div class="rainput-username active valid">
<label>Username</label>
<input type="text" placeholder="Please enter your username" autofocus/>
<i class="fa fa-user"></i>
</div>
<div class="rainput-password">
<label>Password</label>
<input type="password" placeholder="Password" />
<i id="mykey" class="fa fa-key"></i>
</div>
<p>Forgotten <a href="#">username</a> or <a href="#">password</a>?</p>
<div class="rahelp">
<p>
<a class="raclickhere" href="#">Click here</a> for help or contact us on <a href="#">0800 083 1988</a>
</p>
<div class="rajoinbutton">
<button class="btn-secondary btn-registration logino" type="button" data-role="
modal-close">Join Now
</button>
</div>
</div>
<button type="button" class="close" aria-label="Close" data-role="modal-close">×
</button>
<button type="submit" data-submit="ralogin">
<i class="spinner"></i>
<span class="state">Sign In</span>
</button>
</form>
</div><!-- modal-ct logit-ct -->
</div><!-- wrapper -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script>
(function() {
var working = false;
//form,uservalue,passvalue
var raform = document.querySelector('form.ralogin');
var raisuser = document.querySelector('.rainput-username input').value;
var raispass = document.querySelector('.rainput-password input').value;
var ramessage ='';
//onsubmit
document.querySelector('.ralogin')
.addEventListener('submit', function(e) {
e.preventDefault();
if(working) {
return;
}
working = true;
var state = document.querySelector('button > .state');
raform.classList.add('loading');
state.innerHTML = 'Authenticating VIPs';
setTimeout(function() {
raform.classList.add('ok');
debugger;
var rauser = document.querySelector('.rainput-username input').value;
state.innerHTML = '<div class="propa"><img src="https://sb.monetate.net/img/1/748/1304922.png"><p>' + ramessage(rauser) + '</p></div>';
function ramessage(rauser) {
var ramess = ramess || undefined;
if(rauser == '') {
ramess = '<span id="rawelcome">Welcome back!</span>' + '<br/>';
ramess += ".. a lot has happened since you last logged in.";
return ramess;
}
else {
ramess = '<span id="rawelcomeuser">Welcome back <span id="rasuser">' + rauser + "!</span></span><br/><br/><br/>";
ramess += ".. a lot has happened since you last logged in.";
//document.querySelector('button i.spinner').style.top = '65%';
return ramess;
}//else
}
setTimeout(function() {
state.innerHTML = "log in";
//remove loading ok
raform.className = "ralogin";
working = false;
if(raform.className.indexOf('ok') > -1) {
document.querySelector('.spinner').style.opacity = 0;
}
}, 3600);
}, 2000);
});
})();
</script>
</body>
</html>