dr.Brain

doctor Brain

мир глазами веб-разработчика

Плавающий label

создаем плавающий label для поля ввода с помощью CSS и HTML

dr.Brain

время чтения 1 мин.

Photo by Kiril Aglichev on Unsplash

В одной из предыдущих статей мы уже касались темы плавающих плейсхолдеров для полей ввода. Сегодня мы разберем один из вариантов реализации такого визуального эффекта.

Итак, сразу перейдем к коду:

HTML

Создадим базовую разметку для элементов формы

<main>
  <form>
    <div>
      <input id="email" type="email" placeholder=" " />
      <label for="email">Email</label>
    </div>
    <div>
      <input id="password" type="password" placeholder=" " />
      <label for="password">Password</label>
    </div>
  </form>
</main>

CSS

Теперь определим CSS-свойства элементов формы

div {
  display: flex;
  flex-direction: column-reverse;
  max-width: 20rem;
  margin: 0 auto;
}

input {
  border: none;
  padding: 1rem;
  margin-top: 2rem;
  font-size: 1.6rem;
  border-bottom: 0.1rem solid #bdbdbd;
  outline: none;  
}

label {
  padding-left: 1rem;
  color: #bdbdbd;
  transform: translateY(4.8rem);
  transform-origin: left top;
  cursor: text;
  transition: all 0.3s;
}

Наконец, зададим свойства для того, чтобы плейсхолдеры, роль которых выполняют элементы label, перемещались, когда поля ввода получают фокус.

input:focus,
input:not(:placeholder-shown) {
  border-bottom: 0.2rem solid #212121;
}


input:focus ~ label,
input:not(:placeholder-shown) ~ label {
  padding: 0;
  color: #212121;
  transform: translateY(2rem) scale(0.8);
}

Вот и все

Пример можно посмотреть на codepen.


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.