Floating Input Label

by Venkatesh Dematti

HTML

<!DOCTYPE html>

<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Float Labels | Webdevtrick.com</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

	<main>
	<h1>Floating Labels From</h1>
	<form class="flp">
		<div>
			<input type="text" id="fname" />
			<label for="fname">First Name</label>
		</div>
		<div>
			<input type="text" id="lname" />
			<label for="lname">Last Name</label>
		</div>
		<div>
			<input type="text" id="email" />
			<label for="email">Email</label>
		</div>
	</form>
</main>

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js'></script>
<script  src="function.js"></script>

</body>
</html>

CSS

@import url('https://fonts.googleapis.com/css?family=Josefin+Sans&display=swap');
* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}
body {
	padding-top: 100px;
	background:#e8eaed;
	font-family: 'Josefin Sans', sans-serif;
}
main {
	max-width: 500px;
	margin: 0 auto;
	padding-bottom: 10px;
	background: white; 
	border-radius: 3px; 
	overflow: hidden;
}
h1 {
	font-size: 24px; 
	font-weight: normal;
	background: #ff3a3a; 
	color: white;
	text-align: center; 
	padding: 20px 0; margin-bottom: 40px;
}
.flp {
	padding: 0 50px;
}
.flp div {
	position: relative;
	 margin-bottom: 30px;}

.flp input, .flp label {
	width: 400px;
	display: block;
	font: inherit; 
	font-size: 16px; 
	line-height: 24px;
	height: 46px;
	border: 1px solid #999;
}
.flp input {
	padding: 10px;
	outline: none; 
	border-radius: 3px;
}
.flp label {
	position: absolute; 
	left: 0;
	top: 0;
	padding: 10px 8px;
	border-color: transparent;
	color: #666;
	cursor: text;
}
.ch {
	display: block;
	 float: left;
	position: relative; 
	background: white; 
}
.ch:first-child {padding-left: 2px;}
.ch:last-child {padding-right: 2px;}

.focussed {
	pointer-events: none;
}
@media (max-width: 765px) {
	.flp {
		padding: 0 15px;
	}
	.flp input, .flp label {
		width: 100%;
	}
}

JavaScript

$(".flp label").each(function(){
	var sop = '<span class="ch">'; 
	var scl = '</span>'; 

	$(this).html(sop + $(this).html().split("").join(scl+sop) + scl);

	$(".ch:contains(' ')").html("&nbsp;");
})

var d;

$(".flp input").focus(function(){

	var tm = $(this).outerHeight()/2 *-1 + "px";

	$(this).next().addClass("focussed").children().stop(true).each(function(i){
		d = i*50;
		$(this).delay(d).animate({top: tm}, 200, 'easeOutBack');
	})
})
$(".flp input").blur(function(){
	if($(this).val() == "")
	{
		$(this).next().removeClass("focussed").children().stop(true).each(function(i){
			d = i*50;
			$(this).delay(d).animate({top: 0}, 500, 'easeInOutBack');
		})
	}
})