Animated form validation
How do I make an animated form validation?
Using animations exported from after effects I did an animated version of the google login form. It simulates an email validation: regardless of what you input it will display the invalid animation. . What is a animated form validation? How do you make a animated form validation? This script and codes were developed by Kittons on 18 November 2022, Friday.
Animated form validation - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>animated form validation</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <div class="header"> <div class="logo"></div>
</div>
<h1>One Account. All of Google.</h1>
<h2>Sign in to continue to Gmail</h2>
<div class="formContainer"> <div id="main_bg"></div> <div id="main"></div> <div id="wrong"></div>
</div> <script src='https://labs.nearpod.com/bodymovin/demo/login/bodymovin.js'></script>
<script src='https://labs.nearpod.com/bodymovin/demo/login/all.js'></script> <script src="js/index.js"></script>
</body>
</html>
Animated form validation - Script Codes CSS Codes
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; src: local('Open Sans Light'), local('OpenSans-Light'), url(//fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTegdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
input,
div { box-sizing: border-box;
}
input[type="text"]{ width : 273px; height : 43px; padding : 0 7px; font-size : 16px; border : none; background-color : transparent;
}
body { background-color: #fff; margin: 0px; height: 100%; overflow: auto; font-size: 0;
}
button { border: none; outline: none; padding: 0; width : 273px; height : 35px; cursor : pointer;
}
#main,
#wrong,
#main_bg { position: absolute; top: 0; left: 0; right: 0; width: 360px; height: 600px; display: block; overflow: hidden; transform: translate3d(0, 0, 0); margin: auto; opacity: 1;
}
#main_bg { z-index: 1;
}
#main { z-index: 2;
}
#wrong { z-index: 3;
}
h1 { font-family: 'Open Sans', arial; -webkit-font-smoothing: antialiased; color: #555; font-size: 42px; font-weight: 300; margin-top: 0; margin-bottom: 20px; text-align: center;
}
h2 { font-family: 'Open Sans', arial; -webkit-font-smoothing: antialiased; color: #555; font-size: 18px; font-weight: 400; margin-bottom: 20px; text-align: center;
}
.formContainer { position: relative;
}
.header { height: 108px; width: 100%; text-align: center; overflow: hidden;
}
.header .logo { background-image: url(https://ssl.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_112x36dp.png); background-size: 112px 36px; background-repeat: no-repeat; float: none; margin: 40px auto 30px; display: block; height: 38px; width: 116px;
}
Animated form validation - Script Codes JS Codes
var mainElem = document.getElementById('main'), main_bgElem = document.getElementById('main_bg'), wrongElem = document.getElementById('wrong');
var inputElem;
var mainAnim, mainBgAnim, buttonAnim, wrongAnim;
wrongElem.style.display = 'none';
mainAnim = loadAnimation(mainElem, 'html', false, false, mainAnim_data);
mainBgAnim = loadAnimation(main_bgElem, 'svg', false, false, mainBg_data);
replaceInputElem();
function loadAnimation(container, renderer, autoplay, loop, data) { var animData = { container: container, renderer: renderer, autoplay: autoplay, loop: loop, animationData: data }; return bodymovin.loadAnimation(animData);
}
function doGetCaretPosition(oField) { var iCaretPos = 0; if (document.selection) { oField.focus(); var oSel = document.selection.createRange(); oSel.moveStart('character', -oField.value.length); iCaretPos = oSel.text.length; } else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionStart; return iCaretPos;
}
function replaceInputElem() { var lastValue; function inputKeyDown(ev) { var text = inputElem.value; if (lastValue === text) { if (ev.keyCode === 13) { loadWrongAnimation(); } return; } lastValue = text; var pos = doGetCaretPosition(inputElem); var atPos = text.lastIndexOf('@'); if (atPos >= pos || atPos === -1) { mainBgAnim.playSegments([0, 5], true); } else { mainBgAnim.playSegments([6, 15], true); } } var elem = document.getElementById('inputPlaceholder'); elem.innerHTML = ''; inputElem = document.createElement('input'); inputElem.setAttribute('type', 'text'); inputElem.onkeyup = inputKeyDown; elem.appendChild(inputElem); loadButtonAnim();
}
function wrongComplete() { wrongElem.style.display = 'none'; mainElem.style.display = 'block'; main_bgElem.style.display = 'block'; mainAnim.goToAndStop(0); mainAnim.play();
}
function loadWrongAnimation() { if (wrongAnim) { wrongAnim.removeEventListener('complete', wrongComplete); wrongAnim.destroy(); } var wrongDataInstance = JSON.parse(JSON.stringify(wrongData)); wrongDataInstance.assets[0].layers[0].t.d.t = inputElem.value || ' '; var wrongInstanceData = { container: wrongElem, renderer: 'svg', loop: false, autoplay: true, animationData: wrongDataInstance } wrongElem.style.display = 'block'; mainElem.style.display = 'none'; main_bgElem.style.display = 'none'; wrongAnim = bodymovin.loadAnimation(wrongInstanceData); wrongAnim.addEventListener('complete', wrongComplete);
}
function loadButtonAnim() { var elem = document.getElementById('blue_bt'); elem.innerHTML = ''; var button = document.createElement('button'); button.style.backgroundColor = 'transparent'; elem.appendChild(button); function buttonOut(ev) { if (!checkIfChild(ev.target, button)) { buttonAnim.setDirection(-1); buttonAnim.play(); document.removeEventListener('mouseover', buttonOut); button.addEventListener('mouseover', buttonOver); } } function buttonOver() { buttonAnim.setDirection(1); buttonAnim.play(); setTimeout(function() { document.addEventListener('mouseover', buttonOut); }, 0); button.removeEventListener('mouseover', buttonOver); } buttonAnim = loadAnimation(button, 'svg', false, false, buttonAnimData); buttonAnim.addEventListener('elementsReady', function() { mainAnim.play(); button.addEventListener('mouseover', buttonOver); button.addEventListener('click', loadWrongAnimation); });
}
function checkIfChild(elem, parent) { while (elem.parentNode) { if (elem.parentNode === parent) { return true; } elem = elem.parentNode; } return false;
}
Developer | Kittons |
Username | airnan |
Uploaded | November 18, 2022 |
Rating | 4 |
Size | 3,760 Kb |
Views | 18,216 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Behind the Grunt | 1,783 Kb |
Murally | 1,789 Kb |
An animated year | 1,852 Kb |
Curved warp | 3,581 Kb |
A christmas loop in svg | 2,227 Kb |
HTML codepen banner | 1,488 Kb |
Shapes recolored | 2,268 Kb |
Tribute to white stripes | 4,748 Kb |
Adventure Interactive Time in 2.75D | 2,716 Kb |
Movin bodymovin | 2,574 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Simple Login Form Template | Banunn | 3,571 Kb |
Scroll to view if element partially out of view port height | ChrisMaki | 2,104 Kb |
A Pen by Anoop | Anoopjohn | 330,760 Kb |
Tree growth tests | Orchard | 3,818 Kb |
Tab Menus | Zephyr | 3,180 Kb |
Weather App | OmranAbazid | 2,596 Kb |
Simple blog concept | Drew_mc | 2,666 Kb |
Em Test | Rodesco | 1,784 Kb |
Portfolio Landing Page | FDfranklin | 3,585 Kb |
Animate a paper plane along an SVG path, looking ahead | PotatoDie | 3,734 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!