Создание полей input в стиле Google Material Design на чистом CSS3
1. HTML-разметка
HTML будет довольно простым. Нам потребуется стандартная форма с двумя input-полями. Вот она:
<form>
<div class="group">
<input type="text" required>
<span class="bar"></span>
<label>Имя</label>
</div>
<div class="group">
<input type="text" required>
<span class="bar"></span>
<label>Email</label>
</div>
</form>
Тут у нас три компонента, которые нам нужны.
input
Будет служить в качестве входных данных.bar
Проведет два бара, которые составляют подчеркивание.label
Будет выступать в качестве placeholder, пока мы не нажмете на input. После чего он сместится вверх.
С HTML разобрались, переходим к CSS.
2. Анимирование input’ов
Все CSS-стили разделим на три составные части, это: starting stylings
(дефолтные стили нашей формы) label/placeholder
и underline
.
Начнем, конечно с дефолтных стилей:
/* form starting stylings ------------------------------- */
.group {
position: relative;
margin-bottom: 30px;
}
input {
font-size: 16px;
padding: 10px;
display: block;
width: 300px;
border: none;
border-bottom: 1px solid #ccc;
}
input:focus {
outline: none;
}
Здесь мы просто разместили наши поля ввода формы. Также устанавливаем group
позиционирование position:relative;
для того, чтобы в дальнейшем иметь возможность размещать прочие элементы относительно этого.
Теперь переходим к стилизации прочих элементов нашей формы:
/* LABEL ======================================= */
label {
color: #999;
font-size: 18px;
position: absolute;
pointer-events: none;
left: 10px;
top: 15px;
transition: 0.2s ease all;
-moz-transition: 0.2s ease all;
-webkit-transition: 0.2s ease all;
}
/* active state */
input:focus ~ label, input:valid ~ label {
top: -15px;
font-size: 14px;
color: #5264AE;
}
/* BOTTOM BARS ================================= */
.bar {
position: relative;
display: block;
width: 320px;
}
.bar:before, .bar:after {
content: "";
height: 2px;
width: 0;
bottom: 0;
position: absolute;
background: #5264AE;
transition: 0.2s ease all;
-moz-transition: 0.2s ease all;
-webkit-transition: 0.2s ease all;
}
.bar:before {
left: 50%;
}
.bar:after {
right: 50%;
}
/* active state */
input:focus ~ .bar:before,
input:focus ~ .bar:after {
width: 50%;
}
На этом все. Работа завершена, и теперь у нас есть поле ввода, похожее на поля ввода Google Material Design.
3. Результат работы
See the Pen Google Material Design (input) by Migo Userlife (@migo_userlife) on CodePen.