A simple, minimal and intuitive Password Meter interface for website users to validate, say something like a password. Tools: HTML, CSS, JS
A Pen by Oluwasegun on CodePen.
<html lang="en-us"> | |
<head> | |
<meta charset="UTF-8"> | |
<link rel="stylesheet" type="text/css" href="index.css"> | |
<link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'> | |
<title>Password Validator</title> | |
</head> | |
<body> | |
<script src="passwordValidator.js"></script> | |
<div> | |
<div> | |
<h3>Password</h3> | |
<input id="passType" type="text" onkeyup="validatePassword()" | |
onblur="validatePassword()" /><br/> | |
<button onclick="validatePassword()" class="button">Validate</button> | |
</div> | |
<div id="dispDiv"> | |
<p class="dispLevel">Password Strength: <p id="passwdLevel"></p></p> | |
<div id="passMeter" class="center"> | |
<div id="meter"> | |
</div> | |
</div> | |
<p id="errDisp"></p><br/> | |
</div> | |
</div> | |
</body> | |
</html> |
A simple, minimal and intuitive Password Meter interface for website users to validate, say something like a password. Tools: HTML, CSS, JS
A Pen by Oluwasegun on CodePen.
function validatePassword() { | |
let passwd = document.getElementById('passType'); | |
document.getElementById('errDisp').innerHTML = ""; | |
let passMeter = document.getElementById('meter'); | |
let validity = 0; | |
// Check 1 | |
if (passwd.value.toUpperCase() !== passwd.value) { | |
validity += 0.25; | |
} | |
// Check 2 | |
if (passwd.value.toLowerCase()!==passwd.value) { | |
validity += 0.25; | |
} | |
// Check 3 | |
if (/[0-9]/.test(passwd.value)) { | |
validity += 0.25; | |
} | |
// Check 4 | |
if (/[!@#\$%\^&\*]/.test(passwd.value)) { | |
validity += 0.25; | |
} | |
document.getElementById("passwdLevel").innerHTML = (validity*100).toString() + " %"; | |
// Check 5 | |
if (passwd.value.length < 6) { | |
document.getElementById('errDisp').innerHTML = "Minimum Password Length is 6"; | |
// should be passed to the div for display on screen | |
} | |
// Check 6 | |
if (/[\s\S*]{13,}/.test(passwd.value)) { | |
document.getElementById('errDisp').innerHTML = "Maximum Password Length is 13"; | |
// should be passed to the div for display on screen | |
} | |
// set password meter based on validity score | |
if (validity === 0.25) { | |
passMeter.style.width = "200px"; | |
passMeter.style.backgroundColor = "red"; | |
passMeter.style.width = "50px"; | |
passMeter.style.transitionProperty = "background-color"; | |
} | |
else if (validity === 0.50) { | |
passMeter.style.backgroundColor = "yellow"; | |
passMeter.style.width = "100px"; | |
passMeter.style.transitionProperty = "width"; | |
} | |
else if (validity === 0.75) { | |
passMeter.style.backgroundColor = "orange"; | |
passMeter.style.width = "150px"; | |
} | |
else if (validity === 1.00) { | |
passMeter.style.backgroundColor = "green"; | |
passMeter.style.width = "200px"; | |
} | |
else if(validity === 0) { | |
passMeter.style.backgroundColor = "whitesmoke"; | |
passMeter.style.width = "0px"; | |
passMeter.style.transitionProperty = "background-color"; | |
} | |
} | |
/* | |
console.log(validatePassword('abc'));*/ |
body{ | |
text-align: center; | |
font-family: 'Roboto', Arial,Helvetica,sans-serif; | |
font-size: 2rem; | |
} | |
h3{ | |
color: silver; | |
margin-left: 20px; | |
} | |
#dispDiv{ | |
font-size: small; | |
margin: 10px; | |
align-content: center; | |
} | |
#errDisp{ | |
margin: 10px; | |
color: crimson; | |
font-size: small; | |
} | |
#passwdLevel{ | |
color: green; | |
font-size: small; | |
} | |
#passType{ | |
font-size: 2rem; | |
} | |
.button{ | |
opacity: 0.8; | |
color: grey; | |
padding:14px 40px; | |
margin: 4px 2px; | |
cursor: pointer; | |
border: 2px solid #555555; | |
} | |
.dispLevel{ | |
margin-top: 10px; | |
background-blend-mode: multiply; | |
font-size: small; | |
color: gray; | |
text-align: center; | |
} | |
#passMeter{ | |
border: 20px gray ; | |
background-color: whitesmoke; | |
width: 200px; /*200px;*/ | |
height: 2px; /*5px;*/ | |
} | |
.center { | |
margin-left: auto; | |
margin-right: auto; | |
overflow: auto; | |
/*width: 50%;*/ | |
} | |
#meter{ | |
background-color: whitesmoke; | |
width: 200px; /*200px;*/ | |
height: 2px; /*5px;*/ | |
transition-property: background-color; | |
transition-timing-function: ease-in; | |
transition-duration: 1s; | |
transition-delay: 0s; | |
} |