Czym jest efekt „floating label”?

Efekt floating label (z ang. „unosząca się etykieta”) to popularne rozwiązanie w projektowaniu formularzy, w którym etykieta (label) początkowo znajduje się wewnątrz pola formularza, przypominając placeholder. W momencie, gdy użytkownik kliknie w pole lub zacznie wprowadzać dane, etykieta przesuwa się nad pole, zapewniając przejrzystość i ciągłą informację o oczekiwanym typie danych.

Ten efekt poprawia użyteczność formularzy, zwłaszcza na urządzeniach mobilnych, i jest szeroko stosowany w systemie Material Design od Google.

 

Dlaczego warto stosować floating labels?

Zalety:

  • Zwiększają czytelność formularza.
  • Oszczędzają miejsce – nie trzeba oddzielnie wyświetlać etykiety i placeholdera.
  • Poprawiają UX – użytkownik zawsze wie, co miał wpisać w dane pole, nawet po wypełnieniu.
  • Prezentują się estetycznie i nowocześnie.

Przykład pola z efektem floating label

Przykład implementacji (HTML + CSS)

Poniżej znajduje się prosty przykład kodu formularza z efektem „floating label”. Możesz go skopiować do pliku .html i otworzyć w przeglądarce.

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Floating Label - Przykład</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f2f2f2;
      padding: 50px;
    }

    .form-group {
      position: relative;
      margin-bottom: 30px;
      width: 300px;
    }

    input {
      width: 100%;
      padding: 1rem 0.5rem 0.5rem 0.5rem;
      font-size: 1rem;
      border: 1px solid #ccc;
      border-radius: 4px;
      background: none;
    }

    label {
      position: absolute;
      left: 0.5rem;
      top: 1rem;
      color: #777;
      pointer-events: none;
      transition: 0.2s ease all;
      background-color: #f2f2f2;
      padding: 0 4px;
    }

    input:focus + label,
    input:not(:placeholder-shown) + label {
      top: -0.6rem;
      left: 0.4rem;
      font-size: 0.75rem;
      color: #333;
    }
  </style>
</head>
<body>

  <h2>Przykład pola z efektem floating label</h2>

  <div class="form-group">
    <input type="text" id="name" placeholder=" " required />
    <label for="name">Imię i nazwisko</label>
  </div>

  <div class="form-group">
    <input type="email" id="email" placeholder=" " required />
    <label for="email">Adres e-mail</label>
  </div>

</body>
</html>

 

Jak działa ten kod?

  • placeholder=" " – pusta wartość placeholdera umożliwia użycie selektora :placeholder-shown, który wykrywa, czy pole jest puste.
  • label ma pozycję absolutną i jest umieszczona dokładnie tam, gdzie wygląda jak placeholder.
  • Gdy input ma focus (input:focus) lub nie jest pusty (:not(:placeholder-shown)), label przesuwa się do góry i zmienia wygląd.

 

Zastosowanie w nowoczesnych frameworkach

Efekt floating label można łatwo zaimplementować również w:

  • Tailwind CSS – przy pomocy utility klas i minimalnego JS.
  • React / Vue / Angular – można tworzyć komponenty FloatingInput.
  • Material UI (MUI) – ma wbudowane komponenty TextField z takim efektem.

 

Podsumowanie

Efekt „floating label” to doskonałe połączenie funkcjonalności i estetyki w formularzach. Jego wdrożenie jest proste, a pozytywny wpływ na doświadczenie użytkownika – znaczący. Warto rozważyć jego zastosowanie przy tworzeniu nowoczesnych interfejsów, zwłaszcza na stronach mobilnych, gdzie przestrzeń jest ograniczona.