guide: inputs
by Kate Mokhova
HTML
<h1>Инпуты</h1>
<div class="row">
<div class="info floatright">
Стандартная работа поля.
</div>
<div class="wrapper floatleft">
<input type="text" required></input>
<label>Текстовое поле</label>
</div>
</div>
<div class="row">
<div class="info floatright">
Кегли и отступы
</div>
<div class="wrapper floatleft" required>
<input type="text" value="Текст в инпуте—16px"></input>
<label>Лейбл 14px</label>
</div>
<div class="px height10"><span>10px</span></div>
<div class="px height8"><span>8px</span></div>
</div>
<div class="row">
<div class="info floatright">
На протсых формах не нужен лейбл—только плейсхолдер. Например, авторизация.
</div>
<div class="wrapper floatleft" required>
<input type="text" placeholder="Просто вводи сюда текст"></input>
</div>
</div>
<div class="row">
<div class="info floatright">
Поле с ошибкой показывается только красным подчеркиванием. Текст ошибки появляется только по фокусу. По умолчанию справа, поверх всего.
</div>
<div class="wrapper floatleft">
<input type="text" class="invalid right" value="Плохое значение" required></input>
<label>Текстовое поле</label>
<div class="popup_right_error example1">
Текст ошибки: в чем состоит, как исправить. Может содержать <a href="#">ссылки</a>
</div>
</div>
<div style="height: 100px;"></div>
<div class="row">
<div class="info floatright">
Если справа есть важная информация/важные поля—сообщение появляется снизу.
</div>
<div class="wrapper floatleft">
<input type="text" class="invalid bottom" value="Плохое значение" required></input>
<label>Текстовое поле</label>
<div class="popup_error error_example">Текст ошибки: в чем состоит, как исправить. Может содержать <a...
CSS
html {width: 100%;overflow:visible;}
body { margin: 0px; padding: 0px; box-sizing: border-box;}
body
{
padding: 50px 0px 0px 200px;
font-family: 'Segoe UI';
font-size: 16px;
color: #454545;
background-color: #fff;
width: 1000px;
margin: 0 auto;
-webkit-font-smoothing: antialiased;
}
h1
{
font-weight: 200;
margin-bottom:70px;
}
h1.colors {margin-bottom: 30px;}
.row { padding-bottom: 100px; width: 100%; display: block;}
.row:after { content: ""; display: block; clear: both;}
.floatleft { float: left;}
.floatright { float: right;}
.info
{
width: 50%;
display: inline-block;
position: relative;
z-index: 0;
}
.wrapper
{ position:relative;}
label
{
color:#b7b7b7;
font-size:16px;
font-weight:normal;
position:absolute;
width: 300px;
pointer-events:none;
top:8px;
transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
}
input
{
font-size: 16px;
padding: 10px 10px 4px 0px;
display: block;
width: 300px;
border: none;
border-bottom: 1px solid #d9d9d9;
transition:0.2s ease border-bottom;
}
input:focus
{
border-bottom: 1px solid #008eff;
box-shadow: 0 1px #008eff;
outline:none;
}
input:focus ~ label, input:valid ~ label
{
top:-12px;
font-size:14px;
}
input:valid ~ label { font-size:14px;}
.invalid
{
border-bottom: 2px solid #D92B2B;
outline:none;
}
input.invalid:focus
{
border-bottom: 2px solid #D92B2B;
box-shadow: 0 0px #008eff;
outline:none;
}
.px
{
width:350px;
background-color: rgba(237, 0, 141, 0.2);
display:inline-block;
position: relative;
top: -24px;
font-size: 11px;
font-family: Verdana;
text-align: right;
}
.height10 { height: 10px; right: 310px; }
.height8 { height: 8px; }
input[placeholder]
{
font-family: 'Segoe UI';
font-size: 16px;
line-height: 21px;
}
div.px span
{
position: relative;
top:...
JavaScript
$('input.bottom').focusin(function() {
$('div.popup_error').addClass('block');
});
$('input.bottom').focusout(function() {
$('div.popup_error').removeClass('block');
});
$('input.right').focusin(function() {
$('div.popup_right_error').addClass('active');
});
$('input.right').focusout(function() {
$('div.popup_right_error').removeClass('active');
});