Primeri in smernice za uporabo slogov nadzora obrazca, možnosti postavitve in komponent po meri za ustvarjanje najrazličnejših obrazcev.
Pregled
Kontrolniki obrazcev Bootstrap razširijo naše stile obrazcev Rebooted z razredi. Uporabite te razrede, da se odločite za njihove prilagojene prikaze za bolj dosledno upodabljanje v brskalnikih in napravah.
Prepričajte se, da uporabljate ustrezen typeatribut pri vseh vnosih (npr. emailza e-poštni naslov ali numberza številske informacije), da izkoristite novejše kontrolnike vnosa, kot je preverjanje e-pošte, izbira številk in več.
Tukaj je hiter primer za predstavitev slogov obrazcev Bootstrapa. Nadaljujte z branjem za dokumentacijo o zahtevanih razredih, postavitvi obrazca in več.
Kontrolniki obrazca
Kontrolniki besedilne oblike, kot <input>so s, <select>s in <textarea>s, so oblikovani z .form-controlrazredom. Vključeni so slogi za splošni videz, stanje fokusa, velikost in drugo.
Bodite prepričani, da raziščete naše obrazce po meri , da še dodatno oblikujete <select>.
Za vnose datotek zamenjajte .form-controlza .form-control-file.
Dimenzioniranje
Nastavite višine z uporabo razredov, kot sta .form-control-lgin .form-control-sm.
Le za branje
Vnosu dodajte readonlylogični atribut, da preprečite spreminjanje vrednosti vnosa. Vnosi samo za branje so videti svetlejši (tako kot onemogočeni vnosi), vendar ohranijo standardni kazalec.
Navadno besedilo samo za branje
Če želite, da so <input readonly>elementi v vašem obrazcu oblikovani kot golo besedilo, uporabite .form-control-plaintextrazred, da odstranite privzeti slog polja obrazca in ohranite pravilen rob in oblazinjenje.
Vhodi obsega
Nastavite vodoravno drsne vnose obsega z uporabo .form-control-range.
Potrditvena polja in radijski sprejemniki
Privzeta potrditvena polja in radii so izboljšani s pomočjo .form-checkenega samega razreda za obe vrsti vnosa, ki izboljša postavitev in obnašanje njunih elementov HTML . Potrditvena polja so namenjena izbiri ene ali več možnosti na seznamu, medtem ko so radijski sprejemniki namenjeni izbiri ene možnosti izmed mnogih.
Podprta so onemogočena potrditvena polja in radijski sprejemniki. Atribut disabledbo uporabil svetlejšo barvo, da bo lažje označil stanje vnosa.
Potrditvena polja in izbirni gumbi podpirajo preverjanje obrazcev na podlagi HTML in zagotavljajo jedrnate, dostopne oznake. Kot taka sta naša <input>s in <label>s sorodna elementa v nasprotju z elementom <input>znotraj a <label>. To je nekoliko bolj podrobno, saj morate določiti atribute idin forza povezavo <input>in <label>.
Privzeto (naloženo)
Privzeto bo poljubno število potrditvenih polj in radijskih postaj, ki so neposredno sorodne, navpično zložene in ustrezno razmaknjene z .form-check.
V vrsti
Združite potrditvena polja ali radijske postaje v isto vodoravno vrstico tako, da jih dodate .form-check-inlinekateremu koli .form-check.
Brez nalepk
Dodaj .position-staticmed vnose .form-check, ki nimajo besedila oznake. Ne pozabite zagotoviti neke oblike oznake za podporne tehnologije (na primer uporaba aria-label).
Postavitev
Ker se Bootstrap uporablja display: blockza width: 100%skoraj vse naše kontrolnike obrazcev, bodo obrazci privzeto zloženi navpično. Dodatne razrede je mogoče uporabiti za spreminjanje te postavitve glede na obrazec.
Oblikujte skupine
Razred .form-groupje najlažji način, da obrazcem dodate nekaj strukture. Zagotavlja prilagodljiv razred, ki spodbuja pravilno združevanje oznak, kontrolnikov, neobveznega besedila pomoči in sporočil za preverjanje obrazca. Privzeto velja le margin-bottom, vendar po .form-inlinepotrebi izbere dodatne sloge. Uporabite ga s <fieldset>s, <div>s ali skoraj katerim koli drugim elementom.
Mreža obrazca
Bolj zapletene oblike je mogoče zgraditi z uporabo naših mrežnih razredov. Uporabite jih za postavitve obrazcev, ki zahtevajo več stolpcev, različne širine in dodatne možnosti poravnave.
Oblikujte vrstico
Zamenjate lahko tudi .rowza .form-row, različico naše standardne mrežne vrstice, ki preglasi privzete žlebove stolpcev za tesnejše in bolj kompaktne postavitve.
Z mrežnim sistemom je mogoče ustvariti tudi bolj zapletene postavitve.
Horizontalna oblika
Ustvarite vodoravne obrazce z mrežo tako, da dodate .rowrazred skupinam obrazcev in z uporabo .col-*-*razredov določite širino svojih oznak in kontrolnikov. Prepričajte se, da dodate .col-form-labeltudi svojim <label>s, da bodo navpično centrirani s svojimi povezanimi kontrolniki obrazca.
Včasih boste morda morali uporabiti pripomočke za rob ali oblazinjenje, da ustvarite popolno poravnavo, ki jo potrebujete. Odstranili smo na primer oznako padding-topna naših zloženih radijskih vhodih, da bi bolje poravnali osnovno črto besedila.
Dimenzioniranje etikete vodoravne oblike
Bodite prepričani, da uporabite .col-form-label-smali .col-form-label-lgza vaš <label>s ali <legend>s, da pravilno sledite velikosti .form-control-lgin .form-control-sm.
Velikost stolpca
Kot je prikazano v prejšnjih primerih, vam naš mrežni sistem omogoča, da postavite poljubno število .cols znotraj .rowali .form-row. Razpoložljivo širino si bodo enakomerno razdelili. Izberete lahko tudi podmnožico vaših stolpcev, ki bo zavzela več ali manj prostora, medtem ko preostali .cols enakomerno razdelijo preostanek s posebnimi razredi stolpcev, kot je .col-7.
Samodejno določanje velikosti
Spodnji primer uporablja pripomoček flexbox za navpično centriranje vsebine in spremembe .col, .col-autotako da vaši stolpci zavzamejo le toliko prostora, kot je potrebno. Povedano drugače, velikost stolpca je odvisna od vsebine.
Nato lahko to znova zmešate z razredi stolpcev, specifičnih za velikost.
Uporabite .form-inlinerazred za prikaz serije oznak, kontrolnikov obrazca in gumbov v eni vodoravni vrstici. Kontrolniki obrazcev v vgrajenih obrazcih se nekoliko razlikujejo od privzetih stanj.
Kontrolniki so display: flex, strnejo vsak prazen prostor HTML in vam omogočajo, da zagotovite nadzor poravnave s pripomočki za razmik in flexbox .
Kontrolniki in vnosne skupine prejmejo width: autopreglasitev privzete vrednosti Bootstrap width: 100%.
Kontrolniki so prikazani samo v vrsticah v pogledih, ki so široki vsaj 576 slikovnih pik, da se upoštevajo ozki pogledi na mobilnih napravah.
Morda boste morali ročno obravnavati širino in poravnavo posameznih kontrolnikov obrazca s pripomočki za razmik (kot je prikazano spodaj). Na koncu se prepričajte, da z vsakim kontrolnikom obrazca vedno vključite a <label>, tudi če ga morate skriti pred obiskovalci, ki ne uporabljajo bralnika zaslona, z .sr-only.
Podprti so tudi kontrolniki in izbire obrazcev po meri.
Alternative za skrite oznake
Podporne tehnologije, kot so bralniki zaslona, bodo imele težave z vašimi obrazci, če ne vključite oznake za vsak vnos. Za te vgrajene obrazce lahko skrijete oznake z uporabo .sr-onlyrazreda. Obstajajo še drugi alternativni načini zagotavljanja oznake za podporne tehnologije, kot je aria-labelatribut ali aria-labelledby. titleČe nobeden od teh ni prisoten, lahko podporne tehnologije uporabijo placeholderatribut, če je prisoten, vendar upoštevajte, da uporaba placeholderkot nadomestilo za druge metode označevanja ni priporočljiva.
Besedilo pomoči
Besedilo pomoči na ravni bloka v obrazcih je mogoče ustvariti z .form-text(prej znano kot .help-blockv v3). Besedilo pomoči v vrstici je mogoče prilagodljivo implementirati z uporabo katerega koli elementa HTML v vrstici in razredov pripomočkov, kot je .text-muted.
Povezovanje besedila pomoči s kontrolniki obrazca
Besedilo pomoči mora biti izrecno povezano s kontrolnikom obrazca, na katerega se nanaša z uporabo aria-describedbyatributa. To bo zagotovilo, da bodo podporne tehnologije, kot so bralniki zaslona, objavile to besedilo pomoči, ko se uporabnik osredotoči ali vstopi v kontrolnik.
Besedilo pomoči pod vnosi je mogoče oblikovati z .form-text. Ta razred vključuje display: blockin doda nekaj zgornjega roba za enostavno ločitev od zgornjih vnosov.
Vaše geslo mora biti dolgo od 8 do 20 znakov, vsebovati mora črke in številke ter ne sme vsebovati presledkov, posebnih znakov ali emojijev.
Besedilo v vrstici lahko uporablja kateri koli tipičen element HTML v vrstici (naj bo to <small>, <span>, ali kaj drugega) z nič več kot razredom uporabnosti.
Onemogočeni obrazci
V vnos dodajte disabledlogični atribut, da preprečite interakcije uporabnikov in naredite lažji.
Dodajte disabledatribut a <fieldset>, da onemogočite vse kontrole znotraj.
Opozorilo s sidri
Brskalniki bodo privzeto obravnavali vse izvorne kontrolnike obrazca ( <input>, <select>in <button>elemente) znotraj <fieldset disabled>kot onemogočene, kar bo preprečilo interakcije s tipkovnico in miško na njih. Če pa vaš obrazec vključuje tudi <a ... class="btn btn-*">elemente, bodo ti dobili samo slog pointer-events: none. Kot je navedeno v razdelku o onemogočenem stanju za gumbe (in posebej v podrazdelku za sidrne elemente), ta lastnost CSS še ni standardizirana in ni v celoti podprta v Internet Explorerju 10 ter uporabnikom tipkovnice ne bo preprečila, da bi se lahko osredotoči ali aktivira te povezave. Če želite biti varni, uporabite JavaScript po meri, da onemogočite takšne povezave.
Združljivost med brskalniki
Medtem ko bo Bootstrap uporabil te sloge v vseh brskalnikih, Internet Explorer 11 in novejši ne podpirajo v celoti disabledatributa na <fieldset>. Uporabite JavaScript po meri, da onemogočite nabor polj v teh brskalnikih.
Validacija
Zagotovite svojim uporabnikom dragocene in koristne povratne informacije s preverjanjem obrazca HTML5 – na voljo v vseh naših podprtih brskalnikih . Izbirajte med privzetimi povratnimi informacijami o preverjanju brskalnika ali implementirajte sporočila po meri z našimi vgrajenimi razredi in začetnim JavaScriptom.
Trenutno priporočamo uporabo stilov preverjanja po meri, saj privzeta sporočila za preverjanje izvornega brskalnika niso dosledno izpostavljena podpornim tehnologijam v vseh brskalnikih (predvsem Chrome v namizju in mobilni napravi).
Kako deluje
Takole deluje preverjanje obrazca z Bootstrapom:
Preverjanje obrazca HTML se uporablja prek dveh psevdorazredov CSS :invalidin :valid. Velja za elemente <input>, <select>in .<textarea>
Bootstrap obsega :invalidin :validstile za nadrejeni .was-validatedrazred, običajno uporabljen za <form>. V nasprotnem primeru se vsako zahtevano polje brez vrednosti ob nalaganju strani prikaže kot neveljavno. Tako lahko izberete, kdaj jih želite aktivirati (običajno po poskusu oddaje obrazca).
Če želite ponastaviti videz obrazca (na primer v primeru dinamičnih oddaj obrazcev z uporabo AJAX), po oddaji znova odstranite .was-validatedrazred iz .<form>
Namesto psevdorazredov za preverjanje veljavnosti na strani strežnika.is-invalid se lahko uporabijo tudi .is-validrazredi . Ne potrebujejo nadrejenega razreda..was-validated
Zaradi omejitev delovanja CSS ne moremo (trenutno) uporabiti slogov za a <label>, ki je pred kontrolnikom obrazca v DOM, brez pomoči JavaScripta po meri.
Vsi sodobni brskalniki podpirajo API za preverjanje omejitev , niz metod JavaScript za preverjanje kontrolnikov obrazcev.
Sporočila s povratnimi informacijami lahko uporabljajo privzete nastavitve brskalnika (različne za vsak brskalnik in jih ni mogoče oblikovati prek CSS) ali naše sloge povratnih informacij po meri z dodatnima HTML in CSS.
setCustomValidityV JavaScriptu lahko zagotovite sporočila o veljavnosti po meri .
S tem v mislih razmislite o naslednjih predstavitvah za naše sloge preverjanja obrazcev po meri, izbirne razrede na strani strežnika in privzete nastavitve brskalnika.
Slogi po meri
Za sporočila o preverjanju obrazca Bootstrap po meri boste morali dodati novalidatelogični atribut v svoj <form>. To onemogoči privzete povratne informacije brskalnika, vendar še vedno omogoča dostop do API-jev za preverjanje obrazca v JavaScriptu. Poskusite oddati spodnji obrazec; naš JavaScript bo prestregel gumb za oddajo in vam posredoval povratne informacije. Ko boste poskušali oddati, boste videli sloge :invalidin uporabljene za vaše kontrolnike obrazca.:valid
Slogi povratnih informacij po meri uporabljajo barve po meri, obrobe, sloge ostrenja in ikone ozadja za boljše posredovanje povratnih informacij. Ikone ozadja za <select>s so na voljo samo z .custom-selectin ne .form-control.
Privzete nastavitve brskalnika
Vas ne zanimajo povratna sporočila preverjanja po meri ali pisanje JavaScripta za spreminjanje vedenja obrazcev? Vse v redu, lahko uporabite privzete nastavitve brskalnika. Poskusite oddati spodnji obrazec. Odvisno od vašega brskalnika in operacijskega sistema boste videli nekoliko drugačen slog povratnih informacij.
Čeprav teh slogov povratnih informacij ni mogoče oblikovati s CSS, lahko še vedno prilagodite besedilo povratnih informacij prek JavaScripta.
Strežniška stran
Priporočamo uporabo preverjanja na strani odjemalca, če pa potrebujete preverjanje na strani strežnika, lahko označite neveljavna in veljavna polja obrazca z .is-invalidin .is-valid. Upoštevajte, da .invalid-feedbackje podprt tudi s temi razredi.
Supported elements
Validation styles are available for the following form controls and components:
<input>s and <textarea>s with .form-control (including up to one .form-control in input groups)
<select>s with .form-control or .custom-select
.form-checks
.custom-checkboxs and .custom-radios
.custom-file
Tooltips
If your form layout allows it, you can swap the .{valid|invalid}-feedback classes for .{valid|invalid}-tooltip classes to display validation feedback in a styled tooltip. Be sure to have a parent with position: relative on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup.
Customizing
Validation states can be customized via Sass with the $form-validation-states map. Located in our _variables.scss file, this Sass map is looped over to generate the default valid/invalid validation states. Included is a nested map for customizing each state’s color and icon. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.
Please note that we do not recommend customizing these values without also modifying the form-validation-state mixin.
Custom forms
For even more customization and cross browser consistency, use our completely custom form elements to replace the browser defaults. They’re built on top of semantic and accessible markup, so they’re solid replacements for any default form control.
Checkboxes and radios
Each checkbox and radio <input> and <label> pairing is wrapped in a <div> to create our custom control. Structurally, this is the same approach as our default .form-check.
We use the sibling selector (~) for all our <input> states—like :checked—to properly style our custom form indicator. When combined with the .custom-control-label class, we can also style the text for each item based on the <input>’s state.
We hide the default <input> with opacity and use the .custom-control-label to build a new custom form indicator in its place with ::before and ::after. Unfortunately we can’t build a custom one from just the <input> because CSS’s content doesn’t work on that element.
In the checked states, we use base64 embedded SVG icons from Open Iconic. This provides us the best control for styling and positioning across browsers and devices.
Checkboxes
Custom checkboxes can also utilize the :indeterminate pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).
If you’re using jQuery, something like this should suffice:
Radios
Inline
Disabled
Custom checkboxes and radios can also be disabled. Add the disabled boolean attribute to the <input> and the custom indicator and label description will be automatically styled.
Switches
A switch has the markup of a custom checkbox but uses the .custom-switch class to render a toggle switch. Switches also support the disabled attribute.
Select menu
Custom <select> menus need only a custom class, .custom-select to trigger the custom styles. Custom styles are limited to the <select>’s initial appearance and cannot modify the <option>s due to browser limitations.
You may also choose from small and large custom selects to match our similarly sized text inputs.
The multiple attribute is also supported:
As is the size attribute:
Range
Create custom <input type="range"> controls with .custom-range. The track (the background) and thumb (the value) are both styled to appear the same across browsers. As only IE and Firefox support “filling” their track from the left or right of the thumb as a means to visually indicate progress, we do not currently support it.
Range inputs have implicit values for min and max—0 and 100, respectively. You may specify new values for those using the min and max attributes.
By default, range inputs “snap” to integer values. To change this, you can specify a step value. In the example below, we double the number of steps by using step="0.5".
File browser
The recommended plugin to animate custom file input: bs-custom-file-input, that’s what we are using currently here in our docs.
The file input is the most gnarly of the bunch and requires additional JavaScript if you’d like to hook them up with functional Choose file… and selected file name text.
We hide the default file <input> via opacity and instead style the <label>. The button is generated and positioned with ::after. Lastly, we declare a width and height on the <input> for proper spacing for surrounding content.
Translating or customizing the strings with SCSS
The :lang() pseudo-class is used to allow for translation of the “Browse” text into other languages. Override or add entries to the $custom-file-text Sass variable with the relevant language tag and localized strings. The English strings can be customized the same way. For example, here’s how one might add a Spanish translation (Spanish’s language code is es):
Here’s lang(es) in action on the custom file input for a Spanish translation:
You’ll need to set the language of your document (or subtree thereof) correctly in order for the correct text to be shown. This can be done using the lang attribute on the <html> element or the Content-Language HTTP header, among other methods.
Prevajanje ali prilagajanje nizov s HTML
Bootstrap ponuja tudi način za prevajanje besedila »Prebrskaj« v HTML z data-browseatributom, ki ga je mogoče dodati oznaki vnosa po meri (primer v nizozemščini):