Flippy Form
HTML
<br><br>
<form>
<input name="First Name" type="text" class="form-field-text">
<br>
<input name="Last Name" type="text" class="form-field-text">
<br>
<input name="Email" type="email" class="form-field-text">
<br>
<textarea name="Message" class="form-field-textarea"></textarea>
<input type="Submit" value="Send" class="form-field-submit">
</form>
CSS
body {
font-family:sans-serif;
background:#2084D3;
}
form {
-webkit-perspective: 500;
display:block;
width:300px;
margin:0 auto;
}
.form-field-text {
background:#4A8EDE;
display:block;
font-size:20px;
line-height:1.4em;
width:250px;
padding:10px;
outline:none;
border:none;
color:rgba(255, 255, 255, .7);
transition:all .3s ease-out;
-webkit-transform:rotateX(180deg);
}
.flip {
-webkit-transform:rotateX(0deg);
-webkit-transform-style: preserve-3d;
}
.form-field-text:focus {
background:#fff;
color:#555;
box-shadow: 0 0 15px rgba(255,255,255,.6);
-webkit-transform:rotateX(0deg);
}
.field-wrap {
display:inline-block;
position:relative;
margin:10px 0;
transition:all .3s ease-out;
}
.field-value {
position:absolute;
color:rgba(255, 255, 255, .7);
font-size:20px;
line-height:1.4em;
top:0;
left:0;
padding:10px;
transition:all .3s ease-out;
pointer-events:none;
}
.form-field-textarea {
background:#4A8EDE;
display:block;
width:250px;
height:120px;
font-size:14px;
line-height:1.4em;
padding:10px;
outline:none;
border:none;
color:rgba(255, 255, 255, .7);
transition:all .3s ease-out;
}
.form-field-textarea:focus {
background:#fff;
color:#555;
}
.form-field-submit {
width: 270px;
padding: 10px;
margin:5px 0;
display: inline-block;
background: #3A5073;
border: 0;
color: #FFF;
font-size: 15px;
border-radius: 3px;
transition:all .3s ease-out;
}
.form-field-submit:hover {
cursor: pointer;
background: #D83C3C;
box-shadow: 0 0 5px #D83C3C;
}
JavaScript
// Add some extra markup
$('.form-field-text, .form-field-textarea').each(function () {
var originalValue = $(this).attr('name');
$(this).wrap('<div class="field-wrap"></div>');
$(this).after('<div class="field-value">' + originalValue + '</div>');
});
// On Text Focus
$(document.body).on('focusin', '.form-field-text', function (event) {
$(this).addClass('flip').next('.field-value').css({
fontSize: "12px",
top: "-15px",
padding:"0"
});
});
// On Text Blur
$(document.body).on('focusout', '.form-field-text', function (event) {
var value = $(this).attr('value');
if (!value) {
$(this).next('.field-value').css({
fontSize: "",
top: "",
padding: ""
});
$(this).removeClass('flip');
}
});
// On Textarea Focus
$(document.body).on('focusin', '.form-field-textarea', function (event) {
$(this).next('.field-value').css({
fontSize: "12px",
top: "-15px",
padding:"0"
});
});
// On Textarea Blur
$(document.body).on('focusout', '.form-field-textarea', function (event) {
var value = $(this).attr('value');
if (!value) {
$(this).next('.field-value').css({
fontSize: "",
top: "",
padding: ""
});
}
});
$('head').append('<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, user-scalable=0">');