Przykłady i wskazówki dotyczące używania stylów formantów formularzy, opcji układu i komponentów niestandardowych do tworzenia szerokiej gamy formularzy.
Przegląd
Kontrolki formularzy Bootstrap rozszerzają nasze style formularzy Rebooted o klasy. Użyj tych klas, aby włączyć niestandardowe wyświetlacze, aby uzyskać bardziej spójne renderowanie w przeglądarkach i urządzeniach.
Pamiętaj, aby użyć odpowiedniego typeatrybutu we wszystkich danych wejściowych (np. w emailprzypadku adresu e-mail lub numberinformacji liczbowych), aby skorzystać z nowszych elementów sterujących, takich jak weryfikacja adresu e-mail, wybór numeru i inne.
Oto szybki przykład demonstrujący style formularzy Bootstrapa. Czytaj dalej, aby uzyskać dokumentację dotyczącą wymaganych klas, układu formularza i nie tylko.
Kontrolki formularzy
Kontrolki formularza tekstowego — takie jak <input>s, <select>s i <textarea>s — są stylizowane razem z .form-controlklasą. Uwzględniono style ogólnego wyglądu, stanu skupienia, zmiany rozmiaru i nie tylko.
Koniecznie zapoznaj się z naszymi niestandardowymi formami , aby uzyskać więcej stylów <select>.
W przypadku danych wejściowych z pliku zamień .form-controlna .form-control-file.
Rozmiary
Ustaw wysokości za pomocą klas takich jak .form-control-lgi .form-control-sm.
Tylko czytać
Dodaj readonlyatrybut logiczny do danych wejściowych, aby zapobiec modyfikacji wartości danych wejściowych. Wejścia tylko do odczytu są jaśniejsze (podobnie jak wejścia wyłączone), ale zachowują standardowy kursor.
Zwykły tekst tylko do odczytu
Jeśli chcesz, aby <input readonly>elementy w formularzu były stylizowane jako zwykły tekst, użyj .form-control-plaintextklasy, aby usunąć domyślny styl pól formularza i zachować poprawny margines i dopełnienie.
Wejścia zakresowe
Ustaw wejścia zakresu z możliwością przewijania w poziomie za pomocą .form-control-range.
Pola wyboru i radia
Domyślne pola wyboru i radia zostały ulepszone za pomocą jednej .form-checkklasy dla obu typów danych wejściowych, która poprawia układ i zachowanie ich elementów HTML . Pola wyboru służą do wyboru jednej lub kilku opcji z listy, podczas gdy radia służą do wyboru jednej opcji z wielu.
Obsługiwane są wyłączone pola wyboru i opcje radiowe, ale aby umieścić not-allowedkursor po najechaniu na element nadrzędny <label>, musisz dodać disabledatrybut do .form-check-input. Atrybut wyłączony spowoduje zastosowanie jaśniejszego koloru, aby pomóc wskazać stan wejścia.
Pola wyboru i radia są zbudowane tak, aby wspierać walidację formularzy opartą na HTML i zapewniać zwięzłe, dostępne etykiety. Jako takie, nasze <input>s i <label>s są elementami rodzeństwa, w przeciwieństwie do <input>wewnątrz <label>. Jest to nieco bardziej gadatliwe, ponieważ musisz określić atrybuty idi for, aby powiązać <input>i <label>.
Domyślny (skumulowany)
Domyślnie dowolna liczba pól wyboru i radiotelefonów, które są bezpośrednim rodzeństwem, zostanie ułożona pionowo i odpowiednio rozmieszczona za pomocą .form-check.
W linii
Pogrupuj pola wyboru lub radia w tym samym poziomym rzędzie, dodając .form-check-inlinedo dowolnego .form-check.
Bez etykiet
Dodaj .position-staticdo wejść w obrębie .form-check, które nie mają żadnego tekstu etykiety. Pamiętaj, aby nadal podać jakąś formę etykiety dla technologii pomocniczych (na przykład używając aria-label).
Układ
Ponieważ Bootstrap ma zastosowanie display: blocki width: 100%do prawie wszystkich naszych kontrolek formularzy, formularze będą domyślnie układane w stos pionowo. Dodatkowe klasy mogą służyć do różnicowania tego układu na podstawie formularza.
Grupy form
Klasa .form-groupto najprostszy sposób na dodanie pewnej struktury do formularzy. Zapewnia elastyczną klasę, która zachęca do prawidłowego grupowania etykiet, kontrolek, opcjonalnego tekstu pomocy i komunikatów weryfikacyjnych formularzy. Domyślnie ma zastosowanie tylko , ale w razie potrzeby margin-bottompobiera dodatkowe style . .form-inlineUżyj go z <fieldset>s, <div>s lub prawie każdym innym elementem.
Siatka formularzy
Bardziej złożone formularze można budować za pomocą naszych klas siatek. Użyj ich w przypadku układów formularzy, które wymagają wielu kolumn, różnych szerokości i dodatkowych opcji wyrównania.
Wiersz formularza
Możesz także zamienić .rowna .form-row, odmianę naszego standardowego wiersza siatki, który zastępuje domyślne rynny kolumn, aby uzyskać bardziej zwarte i zwarte układy.
Za pomocą systemu siatki można również tworzyć bardziej złożone układy.
Forma pozioma
Twórz formularze poziome z siatką, dodając .rowklasę do grup formularzy i używając .col-*-*klas do określania szerokości etykiet i kontrolek. Pamiętaj, aby dodać .col-form-labelrównież do swoich <label>s, aby były wyśrodkowane w pionie z powiązanymi kontrolkami formularza.
Czasami może być konieczne użycie narzędzi do marginesów lub dopełniania, aby uzyskać idealne wyrównanie, którego potrzebujesz. Na przykład usunęliśmy padding-topetykietę na naszych skumulowanych wejściach radiowych, aby lepiej wyrównać linię bazową tekstu.
Rozmiar etykiety w formie poziomej
Upewnij się, że używasz .col-form-label-smlub .col-form-label-lgdo swojego <label>s lub <legend>s, aby prawidłowo podążać za rozmiarem .form-control-lgi .form-control-sm.
Rozmiary kolumn
Jak pokazano w poprzednich przykładach, nasz system siatki pozwala na umieszczenie dowolnej liczby .cols w obrębie .rowlub .form-row. Podzielą dostępną szerokość równo między siebie. Możesz także wybrać podzbiór swoich kolumn, aby zajmować mniej lub więcej miejsca, podczas gdy pozostałe .colkolumny równo podzielą resztę za pomocą określonych klas kolumn, takich jak .col-7.
Automatyczne dopasowywanie
Poniższy przykład wykorzystuje narzędzie flexbox do pionowego wyśrodkowania zawartości i zmian .coltak .col-auto, aby Twoje kolumny zajmowały tylko tyle miejsca, ile jest potrzebne. Innymi słowy, same rozmiary kolumn zależą od zawartości.
Następnie możesz ponownie zmiksować to z klasami kolumn specyficznymi dla rozmiaru.
Użyj .form-inlineklasy, aby wyświetlić serię etykiet, kontrolek formularzy i przycisków w jednym poziomym rzędzie. Kontrolki formularzy w formularzach wbudowanych różnią się nieco od ich stanów domyślnych.
Kontrolki to display: flex, zwijające wszelkie białe znaki HTML i pozwalające zapewnić kontrolę wyrównania za pomocą narzędzi odstępów i flexbox .
Kontrolki i grupy wejściowe otrzymują, width: autoaby zastąpić domyślne ustawienie Bootstrap width: 100%.
Kontrolki pojawiają się tylko w widocznych oknach o szerokości co najmniej 576 pikseli, aby uwzględnić wąskie okna widoczne na urządzeniach mobilnych.
Może być konieczne ręczne określenie szerokości i wyrównania poszczególnych kontrolek formularza za pomocą narzędzi do ustawiania odstępów (jak pokazano poniżej). Na koniec pamiętaj, aby zawsze dołączyć znak <label>do każdej kontrolki formularza, nawet jeśli chcesz ukryć go przed użytkownikami, którzy nie korzystają z czytnika ekranu, za pomocą .sr-only.
Obsługiwane są również niestandardowe kontrolki formularzy i selekcje.
Alternatywy dla ukrytych etykiet
Technologie wspomagające, takie jak czytniki ekranu, będą miały problemy z formularzami, jeśli nie dodasz etykiety do wszystkich danych wejściowych. W przypadku tych formularzy wbudowanych możesz ukryć etykiety za pomocą .sr-onlyklasy. Istnieją dalsze alternatywne metody umieszczania etykiety dla technologii wspomagających, takie jak aria-labelatrybut lub aria-labelledby. titleJeśli żaden z nich nie występuje, technologie wspomagające mogą odwoływać się do używania placeholderatrybutu, jeśli występuje, ale należy pamiętać, że nie zaleca się używania placeholdergo jako zamiennika dla innych metod znakowania.
Tekst pomocy
Tekst pomocy na poziomie bloku w formularzach można utworzyć za pomocą .form-text(wcześniej znanego jako .help-blockw wersji 3). Wbudowany tekst pomocy można elastycznie zaimplementować za pomocą dowolnego wbudowanego elementu HTML i klas narzędziowych, takich jak .text-muted.
Kojarzenie tekstu pomocy z kontrolkami formularza
Tekst pomocy powinien być jawnie powiązany z kontrolką formularza, do której się odnosi przy użyciu aria-describedbyatrybutu. Dzięki temu technologie pomocnicze — takie jak czytniki ekranu — będą ogłaszać ten tekst pomocy, gdy użytkownik skupi się lub przejdzie do kontrolki.
Tekst pomocy poniżej danych wejściowych może być stylizowany za pomocą .form-text. Ta klasa zawiera display: blocki dodaje górny margines ułatwiający odstępy od powyższych danych wejściowych.
Twoje hasło musi mieć od 8 do 20 znaków, zawierać litery i cyfry oraz nie może zawierać spacji, znaków specjalnych ani emotikonów.
W tekście śródliniowym można używać dowolnego typowego śródliniowego elementu HTML (czy to <small>, <span>, czy czegoś innego) z niczym więcej niż klasą użytkową.
Formularze dla osób niepełnosprawnych
Dodaj disabledatrybut logiczny do danych wejściowych, aby zapobiec interakcji użytkownika i sprawić, by wyglądał jaśniej.
Dodaj disabledatrybut do a, <fieldset>aby wyłączyć wszystkie znajdujące się w nim kontrolki.
Zastrzeżenie za pomocą kotwic
Domyślnie przeglądarki traktują wszystkie natywne kontrolki formularzy ( <input>i elementy) wewnątrz a <select>jako wyłączone, zapobiegając interakcji klawiatury i myszy na nich. Jeśli jednak formularz zawiera również elementy, otrzymają one tylko styl . Jak wspomniano w sekcji dotyczącej stanu wyłączenia przycisków (a konkretnie w podsekcji dotyczącej elementów kotwicy), ta właściwość CSS nie jest jeszcze ustandaryzowana i nie jest w pełni obsługiwana w Internet Explorerze 10 i nie uniemożliwia użytkownikom klawiatury w stanie skoncentrować się lub aktywować te linki. Aby być bezpiecznym, użyj niestandardowego JavaScript, aby wyłączyć takie linki.<button><fieldset disabled><a ... class="btn btn-*">pointer-events: none
Kompatybilność z różnymi przeglądarkami
Chociaż Bootstrap zastosuje te style we wszystkich przeglądarkach, Internet Explorer 11 i starsze wersje nie obsługują w pełni disabledatrybutu na <fieldset>. Użyj niestandardowego JavaScript, aby wyłączyć zestaw pól w tych przeglądarkach.
Walidacja
Przekazuj swoim użytkownikom cenne, przydatne informacje zwrotne dzięki walidacji formularzy HTML5 — dostępnej we wszystkich obsługiwanych przez nas przeglądarkach . Wybierz z domyślnych opinii dotyczących walidacji przeglądarki lub zaimplementuj niestandardowe komunikaty za pomocą naszych wbudowanych klas i początkowego kodu JavaScript.
Obecnie zalecamy używanie niestandardowych stylów walidacji, ponieważ domyślne komunikaty weryfikacji natywnej przeglądarki nie są stale narażone na technologie wspomagające we wszystkich przeglądarkach (zwłaszcza w Chrome na komputerach i urządzeniach mobilnych).
Jak to działa
Oto jak walidacja formularzy działa z Bootstrap:
Walidacja formularzy HTML jest stosowana za pomocą dwóch pseudoklas CSS :invalidoraz :valid. Dotyczy elementów <input>, <select>, i <textarea>.
Bootstrap określa zakres stylów :invalidi :validdo klasy nadrzędnej .was-validated, zwykle stosowanej do <form>. W przeciwnym razie każde wymagane pole bez wartości będzie wyświetlane jako nieprawidłowe po wczytaniu strony. W ten sposób możesz wybrać, kiedy je aktywować (zwykle po próbie przesłania formularza).
Aby zresetować wygląd formularza (na przykład w przypadku dynamicznego przesyłania formularzy za pomocą AJAX), usuń .was-validatedklasę z <form>ponownie po przesłaniu.
Jako rezerwę .is-invalidmożna .is-validużyć klas zamiast pseudoklas do walidacji po stronie serwera . Nie wymagają .was-validatedklasy rodzicielskiej.
Ze względu na ograniczenia w działaniu CSS, nie możemy (obecnie) stosować stylów do elementu znajdującego <label>się przed kontrolką formularza w DOM bez pomocy niestandardowego JavaScript.
Wszystkie nowoczesne przeglądarki obsługują API walidacji ograniczeń , serię metod JavaScript do walidacji kontrolek formularzy.
Wiadomości zwrotne mogą wykorzystywać domyślne ustawienia przeglądarki (inne dla każdej przeglądarki i niestylizowane przez CSS) lub nasze niestandardowe style opinii z dodatkowym kodem HTML i CSS.
Możesz podać niestandardowe komunikaty dotyczące ważności setCustomValidityw JavaScript.
Mając to na uwadze, rozważ poniższe prezentacje naszych niestandardowych stylów walidacji formularzy, opcjonalnych klas po stronie serwera i domyślnych ustawień przeglądarki.
Style niestandardowe
W przypadku niestandardowych komunikatów sprawdzania poprawności formularza Bootstrap należy dodać novalidateatrybut logiczny do <form>. Spowoduje to wyłączenie domyślnych etykietek opinii przeglądarki, ale nadal zapewnia dostęp do interfejsów API walidacji formularzy w języku JavaScript. Spróbuj przesłać poniższy formularz; nasz JavaScript przechwyci przycisk przesyłania i przekaże Ci informację zwrotną.
Podczas próby przesłania zobaczysz style :invalidi :validzastosowane do kontrolek formularza.
Domyślne ustawienia przeglądarki
Nie interesują Cię niestandardowe komunikaty zwrotne dotyczące walidacji ani pisanie JavaScript w celu zmiany zachowań formularzy? Wszystko dobrze, możesz użyć domyślnych ustawień przeglądarki. Spróbuj przesłać poniższy formularz. W zależności od przeglądarki i systemu operacyjnego zobaczysz nieco inny styl opinii.
Chociaż te style opinii nie mogą być stylizowane za pomocą CSS, nadal możesz dostosować tekst opinii za pomocą JavaScript.
Po stronie serwera
Zalecamy korzystanie z walidacji po stronie klienta, ale jeśli potrzebujesz strony serwera, możesz wskazać nieprawidłowe i prawidłowe pola formularza za pomocą .is-invalidi .is-valid. Zauważ, że .invalid-feedbackjest to również obsługiwane przez te klasy.
Obsługiwane elementy
Nasze przykładowe formularze pokazują natywny tekst <input>powyżej, ale style walidacji formularzy są również dostępne dla naszych niestandardowych kontrolek formularzy.
Podpowiedzi
Jeśli pozwala na to układ formularza, możesz zamienić .{valid|invalid}-feedbackklasy na .{valid|invalid}-tooltipklasy, aby wyświetlić informacje zwrotne dotyczące walidacji w stylizowanej podpowiedzi. Upewnij się, że masz na sobie rodzica position: relativedo pozycjonowania podpowiedzi. W poniższym przykładzie nasze klasy kolumn już to mają, ale Twój projekt może wymagać alternatywnej konfiguracji.
Formularze niestandardowe
Aby uzyskać jeszcze większe możliwości dostosowania i spójność między przeglądarkami, użyj naszych całkowicie niestandardowych elementów formularza, aby zastąpić domyślne ustawienia przeglądarki. Są one zbudowane na semantycznych i dostępnych znacznikach, dzięki czemu są solidnymi zamiennikami dowolnej domyślnej kontrolki formularza.
Pola wyboru i radia
Każde pole wyboru i radio jest zapakowane w <div>rodzeństwo <span>, aby stworzyć naszą niestandardową kontrolkę i <label>towarzyszący tekst. Strukturalnie jest to takie samo podejście, jak nasze domyślne .form-check.
Używamy selektora rodzeństwa ( ~) dla wszystkich naszych <input>stanów — na przykład — w celu :checkedprawidłowego nadania stylu naszego niestandardowego wskaźnika formularza. W połączeniu z .custom-control-labelklasą możemy również stylizować tekst dla każdego elementu w oparciu o <input>stan .
Ukrywamy domyślne <input>za pomocą opacityi używamy .custom-control-labeldo zbudowania nowego niestandardowego wskaźnika formularza w jego miejscu za pomocą ::beforei ::after. Niestety nie możemy zbudować niestandardowego tylko z tego, <input>ponieważ CSS contentnie działa na tym elemencie.
W zaznaczonych stanach używamy ikon SVG osadzonych w base64 z Open Iconic . Zapewnia nam to najlepszą kontrolę nad stylami i pozycjonowaniem w różnych przeglądarkach i urządzeniach.
Pola wyboru
Niestandardowe pola wyboru mogą również wykorzystywać :indeterminatepseudoklasę, gdy jest ona ustawiana ręcznie za pomocą JavaScript (nie ma dostępnego atrybutu HTML do jego określenia).
Jeśli używasz jQuery, coś takiego powinno wystarczyć:
Radia
W linii
Wyłączone
Niestandardowe pola wyboru i radia można również wyłączyć. Dodaj disabledatrybut logiczny do <input>wskaźnika, a niestandardowy wskaźnik i opis etykiety zostaną automatycznie przypisane.
Wybierz menu
Niestandardowe <select>menu wymagają tylko niestandardowej klasy .custom-selectdo wyzwalania niestandardowych stylów. Style niestandardowe są ograniczone do <select>początkowego wyglądu i nie mogą modyfikować <option>s ze względu na ograniczenia przeglądarki.
Możesz także wybierać spośród małych i dużych niestandardowych zaznaczeń, aby dopasować nasze dane wejściowe tekstu o podobnej wielkości.
Obsługiwany multiplejest również atrybut:
Jak jest sizeatrybut:
Zasięg
Utwórz niestandardowe <input type="range">kontrolki za pomocą .custom-range. Ścieżka (tło) i miniatura (wartość) mają taki sam styl w różnych przeglądarkach. Ponieważ tylko IE i Firefox obsługują „wypełnianie” swojej ścieżki od lewej lub prawej strony kciuka jako sposób wizualnego wskazania postępu, obecnie nie obsługujemy tego.
Dane wejściowe zakresu mają niejawne wartości odpowiednio dla mini max— 0i 100. Możesz określić nowe wartości dla tych, którzy używają atrybutów mini .max
Domyślnie zakres wprowadza „przyciąganie” do wartości całkowitych. Aby to zmienić, możesz określić stepwartość. W poniższym przykładzie podwajamy liczbę kroków za pomocą step="0.5".
Przeglądarka plików
Plik wejściowy jest najbardziej skomplikowany i wymaga dodatkowego JavaScript, jeśli chcesz je połączyć za pomocą funkcjonalnego Wybierz plik… i wybranego tekstu nazwy pliku.
Ukrywamy domyślny plik <input>przez opacityi zamiast tego stylizujemy <label>. Przycisk jest generowany i pozycjonowany za pomocą ::after. Na koniec deklarujemy a widthi heightna <input>odpowiednie odstępy dla otaczających treści.
Tłumaczenie lub dostosowywanie ciągów
Pseudoklasa służy do tłumaczenia tekstu „Przeglądaj” na inne języki :lang(). Zastąp lub dodaj wpisy do $custom-file-textzmiennej Sass za pomocą odpowiedniego tagu języka i zlokalizowanych ciągów. Angielskie struny można dostosować w ten sam sposób. Na przykład, oto jak można dodać tłumaczenie hiszpańskie (kod języka hiszpańskiego to es):
Oto lang(es)działanie na niestandardowych danych wejściowych pliku dla hiszpańskiego tłumaczenia:
Aby wyświetlić prawidłowy tekst, musisz poprawnie ustawić język dokumentu (lub jego poddrzewa). Można to zrobić między innymi za pomocą atrybutu langelementu lub <html>nagłówka Content-LanguageHTTP .