Generator formularzy CSS
Formularze to najczęściej używana część większości stron i najmniej dopracowana w wielu z nich. Ten generator tworzy CSS kompletnego ostylowanego formularza: responsywną siatkę formularza, pary etykieta + input, textarea, selecty i widoczne stany focusu, w jednym spójnym stylu wizualnym. Ustaw kolor akcentu, promień narożników i odstęp, a następnie skopiuj arkusz stylów. CSS zachowuje natywną semantykę formularza, więc walidacja, obsługa klawiatury i czytniki ekranu działają.
Jak korzystać z generatora
-
1
Ustaw kolor akcentu
Kolor akcentu decyduje o obwódce focusu i kolorze obramowania każdego pola.
-
2
Wybierz promień narożników
Promień dotyczy inputów, textarea i selectów, dzięki czemu wszystkie mają spójny kształt.
-
3
Ustaw odstęp
Odstęp kontroluje pionową przestrzeń między polami w siatce formularza.
-
4
Skopiuj CSS
Kompletny arkusz stylów, który możesz wkleić i dostosować bez ruszania swojego HTML.
Bazowy formularz
<form class="form">
<label class="field">
<span class="field-label">Email</span>
<input type="email" required>
<span class="field-error">Please enter a valid email.</span>
</label>
<label class="field">
<span class="field-label">Password</span>
<input type="password" minlength="8" required>
</label>
<button type="submit" class="button">Sign up</button>
</form>
.field {
display: block;
margin-bottom: 1.25rem;
}
.field-label {
display: block;
font-weight: 500;
margin-bottom: .25rem;
}
.field input {
width: 100%;
padding: .5rem .75rem;
font: inherit;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }
Cztery częste style
| Styl | Czym jest | Najlepszy do |
|---|---|---|
| Z obramowaniem | Obramowanie wokół inputu, przezroczyste tło | Formularze desktopowe, gęste układy |
| Z podkreśleniem | Tylko dolne obramowanie | Minimalistyczne / redakcyjne UI |
| Wypełniony | Szare tło, bez obramowania | UI inspirowane Material Design |
| Pływająca etykieta | Etykieta wewnątrz, animuje się w górę przy focus/wartości | Mobile-first, strony docelowe |
Pływająca etykieta jest najładniejsza, ale wymaga dodatkowego markupu lub JavaScriptu do wykrycia stanu pustego. Wariant z obramowaniem jest najbardziej uniwersalny.
Lista kontrolna dostępności
- Widoczna etykieta dla każdego inputu. Nigdy nie używaj placeholdera jako jedynej etykiety, znika przy focusie i nie spełnia kontrastu.
<label for>albo opakowujący<label>. Oba są poprawne; opakowywanie jest nieco łatwiejsze.- Wskaźnik focusu. Nigdy
outline: nonebez zamiennika. Użytkownicy klawiatury go potrzebują. - Komunikaty błędów: powiąż je przez
aria-describedbyna inpucie. Nie używaj samego koloru do oznaczania błędów, dołącz komunikat tekstowy lub ikonę. - Pola wymagane: użyj atrybutu
required. Dodaj wizualny znacznik (gwiazdka) w etykiecie dla osób widzących. - Typy inputów: używaj
type="email",type="tel",type="url",type="number". Klawiatury mobilne się dostosowują. - Atrybuty
autocomplete:autocomplete="email",autocomplete="current-password"itd. Oszczędza użytkownikom mnóstwo pisania.
Natywne stany walidacji
CSS ma pseudoklasy dla poprawności formularza:
:required/:optional:valid/:invalid:in-range/:out-of-range(dla inputów liczbowych z min/max):placeholder-shown(pusty, placeholder widoczny):user-invalid(nieprawidłowy i użytkownik wszedł w interakcję, właściwy do stylów błędu)
Pseudoklasa :user-invalid to najczystszy sposób pokazania błędów dopiero po tym, jak użytkownik coś zrobił, unikając czerwonych obramowań przed interakcją. Wsparcie pojawiło się we wszystkich głównych przeglądarkach około 2023 roku.
Stan wyłączony
.field input:disabled {
background: #f3f4f6;
color: #9ca3af;
cursor: not-allowed;
}
Wyłączone inputy nie są fokusowalne ani nie da się ich wysłać. Jeśli chcesz, by były fokusowalne dla czytników ekranu, użyj zamiast tego readonly, formularz wysyła wartość, ale użytkownik nie może jej edytować.
Najczęściej zadawane pytania
Nie. Placeholdery znikają, gdy tylko użytkownik zacznie pisać, więc nie mogą służyć jako etykiety. Poza tym tekst placeholdera ma zwykle niski kontrast i nie spełnia WCAG. Użyj widocznej etykiety plus opcjonalnego placeholdera dla podpowiedzi formatu.
Ponieważ :invalid stosuje się natychmiast do pustych pól wymaganych. Użyj :user-invalid (świadomego interakcji) albo połącz :invalid:not(:placeholder-shown) jako obejście w starszych przeglądarkach.
Ustaw appearance: none, usuń domyślną strzałkę, dodaj własną przez obraz tła lub opakowujący span z pseudoelementem-strzałką. Listy opcji w środku pozostają stylowane przez system i nie da się ich dostosować CSS-em.
Obu. Walidacja HTML (required, type, pattern) łapie proste przypadki bez JavaScriptu. JavaScript obsługuje reguły złożone (siła hasła, zależności między polami). Zawsze waliduj też po stronie serwera, walidacja po stronie klienta służy UX, nie bezpieczeństwu.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator losowych liter
Generuj losowe litery A-Z. Wybierz liczbę, wielkie litery, małe litery lub zapis mieszany i użyj wyniku w grach, zadaniach lub lekcjach.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Próbnik kolorów HEX
Wybierz lub wpisz kolor HEX i sprawdź RGB, HSL, przybliżone CMYK, luminancję względną oraz kontrast z bielą i czernią.