JSFiddle - React, Tailwind, and code Playground
by Alvaro Montoro
HTML
<form method="post" action="javascript: void(0);" id="login-form" class="login-form" autocomplete="off">
<h1 class="a11y-hidden">Login form</h1>
<figure aria-hidden="true">
<div class="person-body"></div>
<div class="neck skin"></div>
<div class="head skin">
<div class="eyes"></div>
<div class="mouth"></div>
</div>
<div class="hair"></div>
<div class="ears"></div>
<div class="shirt-1"></div>
<div class="shirt-2"></div>
</figure>
<div>
<label class="required">
<span>Username</span>
<input type="text" name="username" id="username" placeholder="Username" required />
</label>
</div>
<div>
<label class="required">
<span>Password</span>
<input type="password" name="password" id="password" placeholder="Password" required />
</label>
</div>
<div>
<label>
<input type="checkbox" name="show-password" id="show-password" class="a11y-hidden" />
<span class="checkbox-label">Show Password</span>
</label>
</div>
<input type="submit" value="Log In" name="submit" id="submit" />
<div class="forgot-password">
<a href="#">Forgot password?</a>
</div>
</form>
CSS
html, body {
align-items: center;
background: #f2f4f8;
border: 0;
display: flex;
font-family: Helvetica, Arial, sans-serif;
font-size: 16px;
height: 100%;
justify-content: center;
margin: 0;
padding: 0;
}
.a11y-hidden {
position: absolute;
left: -1000em;
}
form {
--background: rgba(255, 255, 255, 1);
--border: rgba(0, 0, 0, 0.125);
--borderDark: rgba(0, 0, 0, 0.25);
--borderDarker: rgba(0, 0, 0, 0.5);
--borderRadius: 0.125rem;
--bgColorH: 0;
--bgColorS: 0%;
--bgColorL: 98%;
--fgColorH: 210;
--fgColorS: 50%;
--fgColorL: 38%;
background: var(--background);
border: 1px solid var(--border);
border-radius: var(--borderRadius);
box-shadow: 0 1rem 1rem -0.75rem var(--border);
padding: 1rem;
}
input {
border: 1px solid var(--border);
border-radius: var(--borderRadius);
box-sizing: border-box;
font-size: 1rem;
height: 2.25rem;
line-height: 1.25rem;
margin-top: 0.25rem;
order: 2;
padding: 0.25rem 0.5rem;
width: 15rem;
transition: all 0.25s;
}
label span {
color: var(--borderDarker);
display: block;
font-size: 0.825rem;
margin-top: 1rem;
position: relative;
}
input[type="submit"] {
color: hsl(var(--bgColorH), var(--bgColorS), var(--bgColorL));
background: hsl(var(--fgColorH), var(--fgColorS), var(--fgColorL));
font-size: 0.75rem;
font-weight: bold;
margin-top: 1rem;
order: 4;
outline: 1px dashed transparent;
outline-offset: 2px;
padding-left: 0;
text-transform: uppercase;
}
input[type="checkbox"] + span {
margin-top: 0.25rem;
padding-left: 1.25rem;
position: relative;
}
input[type="checkbox"] + span::before {
content: "";
display: block;
position: absolute;
top: 0;
left: 0;
width: 0.75rem;
height: 0.75rem;
border: 1px solid var(--borderDark);
border-radius: var(--borderRadius);
transition: all 0.25s;
outline:1px dashed transparent;
outline-offset: 2px;
}
input[type="checkbox"]:checked + span::after {
content: "";
display:...