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">
    Текст ошибки: в&nbsp;чем состоит, как&nbsp;исправить. Может содержать <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">Текст ошибки: в&nbsp;чем состоит, как&nbsp;исправить. Может содержать <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');
    });