JSFiddle - React, Tailwind, and code Playground
HTML
<section id="fast_signup" class="content">
<h3>Hi!</h3>
<form>
<span id="full_name_label" class="input input_jiro">
<input class="input__field input__field--jiro" type="text" id="input-1" />
<label class="input__label input__label--jiro" for="input-1">
<span class="input__label-content input__label-content--jiro">Full Name</span>
</label>
</span>
<span class="input input_jiro">
<input class="input__field input__field--jiro" type="text" id="input-2" />
<label class="input__label input__label--jiro" for="input-2">
<span class="input__label-content input__label-content--jiro">Email</span>
</label>
</span>
<span class="input input_jiro">
<input class="input__field input__field--jiro" type="password" id="input-3" />
<label class="input__label input__label--jiro" for="input-3">
<span class="input__label-content input__label-content--jiro">Password</span>
</label>
</span>
<span class="input input_jiro">
<button id="btn_start_account" class="btn">Sign Up</button>
</span>
</form>
</section>
CSS
body {
background: #666;
}
*:focus {
outline: 0;
}
.input {
position: relative;
z-index: 1;
display: inline-block;
margin: 1em;
max-width: 200px;
width: calc(100% - 2em);
vertical-align: top;
}
.input__field {
position: relative;
display: block;
float: right;
border: none;
border-radius: 0;
background: #333;
color: #fff;
font-weight: 600;
-webkit-appearance: none;
/* for box shadows to show on iOS */
}
.input__field:focus {
outline: none;
}
.input__label {
display: inline-block;
float: right;
padding: 0 1em;
width: 40%;
color: #eee;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.input__label-content {
position: relative;
display: block;
padding: 1.6em 0;
width: 100%;
}
.input_jiro {
margin: 2em 40px 0 0;
}
.input__field--jiro {
opacity: 0;
display: block;
padding: 20px 0;
width: 100%;
color: #DDE2E2;
text-align: center;
font-size: 1.125em;
text-indent: 20px;
background: transparent;
-webkit-transition: opacity 0.3s;
transition: opacity 0.3s;
overflow: hidden;
}
.input__label--jiro {
position: absolute;
left: 0;
padding: 0 0.85em;
width: 100%;
height: 100%;
text-align: left;
}
.input__label-content--jiro {
-webkit-transition: -webkit-transform 0.3s 0.3s;
transition: transform 0.3s 0.3s;
}
.input__label--jiro::before,
.input__label--jiro::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
-webkit-transition: -webkit-transform 0.3s;
transition: transform 0.3s;
}
.input__label--jiro::before {
border-top: 2px solid #333;
-webkit-transform: translate3d(0, 100%, 0) translate3d(0, -2px, 0);
transform: translate3d(0, 100%, 0) translate3d(0, -2px, 0);
-webkit-transition-delay: 0.3s;
transition-delay: 0.3s;
}
.input__label--jiro::after {
z-index: -1;
background: #333;
...