Inputs and Textarea


Basic

Name
Input type number
Email
Password
Password
Message

Line

Name
Password
Message

Placeholders

Line Placeholders


PHP
<!-- Basic -->
<div class="form_item">
	<span class="pre_input">Name</span>
	<label>
		<input type="text" name="name" class="input">
	</label>
</div>

<div class="form_item">
	<span class="pre_input">Input type number</span>
	<label>
		<input type="number" name="name" class="input" inputmode="numeric">
	</label>
</div>

<div class="form_item">
	<span class="pre_input">Email</span>
	<div class="input_icon">
		<div class="svg_wrap">
			<?= svg('iconChat2','') ?>
		</div>
		<div class="input_wrap">
			<label>
				<input type="email" name="email" class="input">
			</label>
		</div>
	</div>
</div>

<div class="form_item">
	<span class="pre_input">Password</span>
	<label class="label_input_icon">
		<input type="password" name="password" class="input">
		<?= svg('iconLock2','') ?>
	</label>
</div>
		
<div class="form_item">
	<span class="pre_input">Password</span>
	<label class="label_input_icon">
		<input type="password" name="password" class="input || input_password">
		<?= svg('iconLock2','') ?>
		<span class="show_password">
            <?= svg('iconVisibilityOn2','eye_showing') ?>
            <?= svg('iconVisibilityOff2','eye_hidden') ?>
        </span>
	</label>
</div>

<div class="form_item">
	<span class="pre_input">Message</span>
	<label>
		<textarea name="message" class="input"></textarea>
	</label>
</div>
	
<!-- Placeholders -->
<div class="form_item">
	<label>
		<input type="text" name="name" class="input" placeholder="Name">
	</label>
</div>

<div class="form_item">
	<div class="input_icon">
		<div class="svg_wrap">
			<?= svg('iconChat2','') ?>
		</div>
		<div class="input_wrap">
			<label>
				<input type="email" name="email" class="input" placeholder="Email">
			</label>
		</div>
	</div>
</div>

<div class="form_item">
	<label class="label_input_icon">
		<input type="password" name="password" class="input" placeholder="Password">
		<?= svg('iconLock2','') ?>
	</label>
</div>

<div class="form_item">
	<label>
		<textarea name="message" class="input" placeholder="Message"></textarea>
	</label>
</div>

<!-- Line -->
<div class="form_item">
	<span class="pre_input">Name</span>
	<label>
		<input type="text" name="name" class="input_line">
	</label>
</div>

<div class="form_item">
	<span class="pre_input">Password</span>
	<label class="label_input_line_icon">
		<input type="password" name="password" class="input_line">
		<?= svg('iconLock2','') ?>
	</label>
</div>

<div class="form_item">
	<span class="pre_input">Message</span>
	<label>
		<textarea name="message" class="input_line"></textarea>
	</label>
</div>
	
<!-- Line Placeholders -->
<div class="form_item">
	<label>
		<input type="text" name="name" class="input_line" placeholder="Name">
	</label>
</div>

<div class="form_item">
	<label class="label_input_line_icon">
		<input type="password" name="password" class="input_line" placeholder="Password">
		<?= svg('iconLock2','') ?>
	</label>
</div>

<div class="form_item">
	<label>
		<textarea name="message" class="input_line" placeholder="Message"></textarea>
	</label>
</div>
Mention
/* В залежності від шрифта використовувати властивість padding-top для вертикального вирівнювання тексту в input */

/* Chrome, Safari */
.input {padding: .7rem 1rem 0;}

/* Firefox */
@-moz-document url-prefix() {
	.input {padding: .4rem 1rem 0;}
}

/* ME */
@supports (-ms-ime-align:auto) {
	.input {padding: .4rem 1rem 0;}
}

/* IE */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
	.input {padding: .3rem 1rem 0;}
}
CSS
::-webkit-input-placeholder{color:#4A6572;-webkit-transition:all .3s;transition:all .3s}
:-moz-placeholder{color:#4A6572;-moz-transition:all .3s;transition:all .3s}
::-moz-placeholder{color:#4A6572;-moz-transition:all .3s;transition:all .3s}
:-ms-input-placeholder{color:#4A6572;-ms-transition:all .3s;transition:all .3s}
::-ms-input-placeholder{color:#4A6572;-ms-transition:all .3s;transition:all .3s}
::placeholder{color:#4A6572;-webkit-transition:all .3s;-o-transition:all .3s;-moz-transition:all .3s;transition:all .3s}

.form_item{margin:1rem 0 1.5rem}
.form_item .pre_input{display:block;margin:0 0 .3rem}

/* Basic */
.input{display:block;width:100%;max-width:100%;height:4rem;font-size:1.5rem;padding:0 1rem;border:.1rem solid #cfcfcf;background-color:#fff;color:#000;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem;-webkit-transition:-webkit-box-shadow .2s ease-in;transition:-webkit-box-shadow .2s ease-in;-o-transition:box-shadow .2s ease-in;-moz-transition:box-shadow .2s ease-in,-moz-box-shadow .2s ease-in;transition:box-shadow .2s ease-in;transition:box-shadow .2s ease-in,-webkit-box-shadow .2s ease-in,-moz-box-shadow .2s ease-in}
.input:focus,.input:active{outline-style:none;-webkit-box-shadow:0 0 0 .3rem rgba(146,153,169,0.25);-moz-box-shadow:0 0 0 .3rem rgba(146,153,169,0.25);box-shadow:0 0 0 .3rem rgba(146,153,169,0.25)}
.input::-webkit-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input:-moz-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input::-moz-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input:-ms-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input::-ms-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input::placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;-o-text-overflow:ellipsis;text-overflow:ellipsis}

.input:focus::-webkit-input-placeholder{opacity:0}
.input:focus:-moz-placeholder{opacity:0}
.input:focus::-moz-placeholder{opacity:0}
.input:focus:-ms-input-placeholder{opacity:0}
.input:focus::-ms-input-placeholder{opacity:0}
.input:focus::placeholder{opacity:0}
.input:-webkit-autofill,.input:-webkit-autofill:focus,.input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 4rem #fff inset!important;-webkit-text-fill-color:#000!important}

@media (-ms-high-contrast: none),(-ms-high-contrast: active),(-moz-touch-enabled: 0),(hover: hover) {
	.input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 4rem #fff inset!important;-webkit-text-fill-color:#000!important}
}

/* Line */
.input_line{display:block;width:100%;max-width:100%;height:4rem;font-size:1.5rem;border:none;border-bottom:.1rem solid #cfcfcf;background-color:transparent;color:#000;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:border-bottom .2s ease-in;-o-transition:border-bottom .2s ease-in;-moz-transition:border-bottom .2s ease-in;transition:border-bottom .2s ease-in}
.input_line:focus,.input_line:active{outline-style:none;border-bottom:.1rem solid #9299a9}
.input_line::-webkit-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input_line:-moz-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input_line::-moz-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input_line:-ms-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input_line::-ms-input-placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;text-overflow:ellipsis}
.input_line::placeholder{font-family:'Nunito Sans',sans-serif;font-size:1.5rem;font-weight:400;color:#4A6572;opacity:1;-o-text-overflow:ellipsis;text-overflow:ellipsis}

.input_line:focus::-webkit-input-placeholder{opacity:0}
.input_line:focus:-moz-placeholder{opacity:0}
.input_line:focus::-moz-placeholder{opacity:0}
.input_line:focus:-ms-input-placeholder{opacity:0}
.input_line:focus::-ms-input-placeholder{opacity:0}
.input_line:focus::placeholder{opacity:0}
.input_line:-webkit-autofill,.input_line:-webkit-autofill:focus,.input_line:-webkit-autofill:active{-webkit-box-shadow:0 0 0 4rem #fff inset!important;-webkit-text-fill-color:#000!important}

@media (-ms-high-contrast: none),(-ms-high-contrast: active),(-moz-touch-enabled: 0),(hover: hover) {
	.input_line:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 4rem #fff inset!important;-webkit-text-fill-color:#000!important}
}

/* Input with icon in box */
.input_icon{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}
.input_icon .svg_wrap{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-moz-box-pack:center;-ms-flex-pack:center;justify-content:center;width:4rem;background-color:#f4f4f4;border:.1rem solid #cfcfcf;-webkit-border-radius:.3rem 0 0 .3rem;-moz-border-radius:.3rem 0 0 .3rem;border-radius:.3rem 0 0 .3rem;margin-right:-.1rem}
.input_icon .svg_wrap .icon{width:1.7rem;height:1.7rem;color:#989898}
.input_icon .input_wrap{-webkit-box-flex:1;-webkit-flex:1 1 auto;-moz-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%}
.input_icon .input{margin:0;-webkit-border-radius:0 .3rem .3rem 0;-moz-border-radius:0 .3rem .3rem 0;border-radius:0 .3rem .3rem 0;-webkit-transition:background-color .2s ease-in;-o-transition:background-color .2s ease-in;-moz-transition:background-color .2s ease-in;transition:background-color .2s ease-in}
.input_icon .input:focus,.input_icon .input:active{-webkit-box-shadow:unset;-moz-box-shadow:unset;box-shadow:unset;background-color:rgba(255,255,255,0.8)}

/* Input with icon */
.label_input_icon{display:block;position:relative}
.label_input_icon .icon{position:absolute;top:1.2rem;left:1.2rem;height:1.6rem;width:1.6rem;color:#989898}
.label_input_icon .input{padding:0 1rem 0 3.5rem}

/* Line input with icon */
.label_input_line_icon{display:block;position:relative}
.label_input_line_icon .icon{position:absolute;top:1.2rem;left:0;height:1.6rem;width:1.6rem;color:#989898}
.label_input_line_icon .input_line{padding:0 0 0 2.5rem}

textarea.input{min-height:12.8rem;padding-top:.5rem;resize:none}
textarea.input_line{min-height:12.8rem;padding-top:.5rem;resize:none}

/* input [type=number] */

/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* Firefox */
input[type=number]{-moz-appearance:textfield!important}

/* Show/Hide Password */
.show_password{display:block;width:1.6rem;height:1.6rem;position:absolute;top:53%;right:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-ms-transform:translate(0,-50%);-o-transform:translate(0,-50%);transform:translate(0,-50%)}
.show_password .icon{position:static;width:1.6rem;height:1.6rem}
.show_password .eye_showing{display:block}
.show_password .eye_hidden{display:none}
.show_password.showing .eye_showing{display:none}
.show_password.showing .eye_hidden{display:block}
SCSS
/* Vars */
$font:               'Nunito Sans', sans-serif;
$white:              #ffffff;
$cb:                 #000000;
$inputColor:         $cb;
$inputBack:          $white;
$inputBackLine:      transparent;
$inputBorder:        #cfcfcf;
$placeholderColor:   #4A6572;
$focusColor:         #9299a9;
$inputIconColor:     #989898;
$inputIconBg:        #f4f4f4;
$inputRad:           .3rem;
$inputRadLine:       0;

::placeholder {
	color: $placeholderColor;
	transition: all .3s;
}

.form_item {
	margin: 1rem 0 1.5rem;
	
	.pre_input {
		display: block;
		margin: 0 0 0.3rem;
	}
}

/* Basic */
.input {
	display: block;
	width: 100%;
	max-width: 100%;
	height: 4rem;
	font-size: 1.5rem;
	padding: 0 1rem;
	border: .1rem solid $inputBorder;
	background-color: $inputBack;
	color: $inputColor;
	border-radius: $inputRad;
	transition: box-shadow 0.2s ease-in;
	
	&:focus, &:active {
		outline-style: none;
		box-shadow: 0 0 0 .3rem rgba($focusColor, 0.25);
	}
	
	&::placeholder {
		font-family: $font;
		font-size: 1.5rem;
		font-weight: 400;
		color: $placeholderColor;
		opacity: 1;
		text-overflow: ellipsis;
	}
	
	&:focus {
		&::placeholder {
			opacity: 0;
		}
	}
	
	&:-webkit-autofill,
	&:-webkit-autofill:focus,
	&:-webkit-autofill:active{
		-webkit-box-shadow: 0 0 0 4rem $inputBack inset !important;
		-webkit-text-fill-color: $inputColor !important;
	}
}

@media (-ms-high-contrast: none), (-ms-high-contrast: active), (-moz-touch-enabled: 0), (hover: hover) {
	.input {
		&:-webkit-autofill:hover {
			-webkit-box-shadow: 0 0 0 4rem $inputBack inset !important;
			-webkit-text-fill-color: $inputColor !important;
		}
	}
}

/* Line */
.input_line {
	display: block;
	width: 100%;
	max-width: 100%;
	height: 4rem;
	font-size: 1.5rem;
	border: none;
	border-bottom: .1rem solid $inputBorder;
	background-color: $inputBackLine;
	color: $inputColor;
	border-radius: $inputRadLine;
	transition: border-bottom 0.2s ease-in;
	
	&:focus, &:active {
		outline-style: none;
		border-bottom: .1rem solid $focusColor;
	}
	
	&::placeholder {
		font-family: $font;
		font-size: 1.5rem;
		font-weight: 400;
		color: $placeholderColor;
		opacity: 1;
		text-overflow: ellipsis;
	}
	
	&:focus {
		&::placeholder {
			opacity: 0;
		}
	}
	
	&:-webkit-autofill,
	&:-webkit-autofill:focus,
	&:-webkit-autofill:active{
		-webkit-box-shadow: 0 0 0 4rem $inputBack inset !important;
		-webkit-text-fill-color: $inputColor !important;
	}
}

@media (-ms-high-contrast: none), (-ms-high-contrast: active), (-moz-touch-enabled: 0), (hover: hover) {
	.input_line {
		&:-webkit-autofill:hover{
			-webkit-box-shadow: 0 0 0 4rem $inputBack inset !important;
			-webkit-text-fill-color: $inputColor !important;
		}
	}
}

/* Input with icon in box */
.input_icon {
	display: flex;
	flex-wrap: wrap;
	
	.svg_wrap {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 4rem;
		background-color: $inputIconBg;
		border: 0.1rem solid $inputBorder;
		border-radius: 0.3rem 0 0 0.3rem;
		margin-right: -.1rem;
		
		.icon {
			width: 1.7rem;
			height: 1.7rem;
			color: $inputIconColor;
		}
	}
	
	.input_wrap {
		flex: 1 1 auto;
		width: 1%;
	}
	
	.input {
		margin: 0;
		border-radius:0 .3rem .3rem 0;
		transition: background-color 0.2s ease-in;
		
		&:focus, &:active {
			box-shadow: unset;
			background-color: rgba($white, .8);
		}
	}
}

/* Input with icon */
.label_input_icon {
	display: block;
	position: relative;
	
	.icon {
		position: absolute;
		top: 1.2rem;
		left: 1.2rem;
		height: 1.6rem;
		width: 1.6rem;
		color: $inputIconColor;
	}
	
	.input {
		padding: 0 1rem 0 3.5rem;
	}
}

/* Line input with icon */
.label_input_line_icon {
	display: block;
	position: relative;
	
	.icon {
		position: absolute;
		top: 1.2rem;
		left: 0;
		height: 1.6rem;
		width: 1.6rem;
		color: $inputIconColor;
	}
	
	.input_line {
		padding: 0 0 0 2.5rem;
	}
}

textarea.input {
	min-height: 12.8rem;
	padding-top: .5rem;
	resize: none;
}

textarea.input_line {
	min-height: 12.8rem;
	padding-top: .5rem;
	resize: none;
}

/* input [type=number] */

/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

/* Firefox */
input[type=number] {
	-moz-appearance: textfield !important;
}
	.label_input_icon .input.input_password {
	padding: 0 3.5rem 0 3.5rem;
}

/* Show/Hide Password */
.show_password {
	display: block;
	width: 1.6rem;
	height: 1.6rem;
	position: absolute;
	top: 53%;
	right: 1.2rem;
	user-select: none;
	cursor: pointer;
	transform: translate(0, -50%);
	
	.icon {
		position: static;
		width: 1.6rem;
		height: 1.6rem;
	}
	
	.eye_showing {
		display: block;
	}
	
	.eye_hidden {
		display: none;
	}
	
	&.showing {
		.eye_showing {
			display: none;
		}
		
		.eye_hidden {
			display: block;
		}
	}
}
JavaScript
/* input[type=number] textfield fix */

$('.input[type=number]').keypress(function (e) {
	var charCode = (e.which) ? e.which : event.keyCode;
	if (String.fromCharCode(charCode).match(/[^0-9]/g)) {
		return false;
	}
});

/* Show/Hide Password */
$('body').on('click', '.show_password', function () {
	var $this = $(this),
		inputPass = $this.closest('.form_item').find('.input_password');
	
	if ($this.hasClass('showing')) {
		$this.removeClass('showing');
		inputPass.attr('type', 'password');
	} else {
		$this.addClass('showing');
		inputPass.attr('type', 'text');
	}
});