form label focusIn/focusOut
by Faisal Khan Janjua
HTML
<div class="atForm">
<form>
<div class="mainForm col-xs-12 col-sm-6">
<label>Your Name</label>
<input type="text" value="this is val" />
</div>
<div class="mainForm col-xs-12 col-sm-6">
<label>Email Address</label>
<input type="email" value="this is val" />
</div>
<div class="mainForm col-xs-12 col-sm-4">
<label>Phone</label>
<input type="text" value="this is val" />
</div>
<div class="mainForm col-xs-12 col-sm-8">
<label>Subject</label>
<input type="text" />
</div>
<div class="mainForm col-xs-12">
<label>Your Message</label>
<textarea>value="this is val"</textarea>
</div>
<div class="mainForm col-xs-12">
<label>Your Message</label>
<select>
<option value="">this is null</option>
<option value="12">this is null</option>
</select>
</div>
<div class="mainForm col-xs-12">
<button type="submit" class="btn formBtnSend">Send Message</button>
<p>We'll do our best to get back to you within 6-8 working hours.</p>
</div>
</form>
</div>
SCSS
$primary: #1ABC9C;
$secondary: #333;
$white: #FFF;
$dullWhite: #F0F0F0;
@mixin transition($trnsTime:300ms) {
-o-transition: all ease-in-out $trnsTime;
-ms-transition: all ease-in-out $trnsTime;
-moz-transition: all ease-in-out $trnsTime;
-webkit-transition: all ease-in-out $trnsTime;
transition: all ease-in-out $trnsTime;
}
.atForm {
& .mainForm {
position: relative;
margin-bottom: 20px;
}
& label {
top: 0;
left: 0;
z-index: 4;
color: #666;
margin-top: 10px;
margin-left: 26px;
font-size: 20px;
font-weight: 300;
position: absolute;
@include transition(150ms);
font-family: 'Lato', sans-serif;
&.still {
font-size: 13px;
margin-top: -8px;
font-weight: 400;
margin-left: 14px;
color: $secondary;
@include transition(200ms);
}
&.focused {
color: $primary;
}
}
& input,
& textarea {
z-index: 6;
width: 100%;
border: none;
color: #666;
display: block;
font-size: 24px;
font-weight: 400;
background: none;
border-radius: 0;
position: relative;
letter-spacing: 1px;
padding: 8px 10px 4px 10px;
@include transition(150ms);
border-bottom: 1px solid #DDD;
font-family: 'Lato', sans-serif;
&:focus {
outline: none;
border-bottom: 1px solid $primary;
}
}
& textarea {
min-width: 100%;
max-width: 100%;
max-height: 220px;
min-height: 90px;
}
& .formBtnSend,
& .formBtnSend:focus {
outline: none;
display: block;
font-weight: 500;
margin: 10px auto;
margin-top: 36px;
padding: 8px 26px 6px;
color: $secondary;
background: $white;
border-radius: 20px;
text-transform: uppercase;
font-family: 'Raleway', sans-serif;
border: 2px solid $secondary;
@include transition(200ms);
&:hover {
color: $dullWhite;
background: $secondary;
}
&+p {
margin: 0;
font-size: 12px;
...
JavaScript
$(document).ready(function() {
function formFields() {
$('.atForm .mainForm').each(function() {
if ($(this).find('input, textarea').length > 0) {
if ($(this).find('input, textarea').val().length > 0) {
$(this).find('label').addClass('still');
}
}
if ($(this).find('select').length > 0) {
$(this).find('label').addClass('still');
}
});
$(".atForm .mainForm").focusin(function() {
$(this).find('label').addClass('focused still');
$(this).focusout(function() {
$(this).find('label').removeClass('focused');
if ($(this).find('input, textarea').val().length < 1) {
$(this).find('label').removeClass('still');
}
});
});
}
formFields();
});