Voorbeelde en gebruiksriglyne vir vormbeheerstyle, uitlegopsies en pasgemaakte komponente vir die skep van 'n wye verskeidenheid vorms.
Oorsig
Bootstrap se vormkontroles brei uit op ons Herlaaide vormstyle met klasse. Gebruik hierdie klasse om in te teken op hul pasgemaakte skerms vir 'n meer konsekwente weergawe oor blaaiers en toestelle.
Maak seker dat jy 'n toepaslike typekenmerk op alle invoere gebruik (bv. emailvir e-posadres of numbervir numeriese inligting) om voordeel te trek uit nuwer invoerkontroles soos e-posverifikasie, nommerkeuse en meer.
Hier is 'n vinnige voorbeeld om Bootstrap se vormstyle te demonstreer. Hou aan om te lees vir dokumentasie oor vereiste klasse, vormuitleg en meer.
Vormkontroles
Tekstuele vormkontroles—soos <input>s, <select>s en s—word saam met die klas <textarea>gestileer . .form-controlIngesluit is style vir algemene voorkoms, fokustoestand, grootte, en meer.
Maak seker dat u ons pasgemaakte vorms verken om styl <select>s verder te bevorder.
Vir lêerinvoer, ruil die .form-controlvir .form-control-file.
Grootte
Stel hoogtes deur klasse soos .form-control-lgen .form-control-sm.
Leesalleen
Voeg die readonlyBoole-kenmerk by 'n invoer om verandering van die invoer se waarde te voorkom. Leesalleen-insette lyk ligter (net soos gedeaktiveerde insette), maar behou die standaardwyser.
Leesalleen gewone teks
As jy <input readonly>elemente in jou vorm as gewone teks wil hê, gebruik die .form-control-plaintextklas om die verstek vormveldstilering te verwyder en die korrekte kantlyn en opvulling te behou.
Reeks insette
Stel horisontaal skuifbare reeksinsette met behulp van .form-control-range.
Merkblokkies en radio's
Verstekmerkblokkies en radio's word verbeter met behulp van .form-check' n enkele klas vir beide invoertipes wat die uitleg en gedrag van hul HTML-elemente verbeter . Merkblokkies is om een of meer opsies in 'n lys te kies, terwyl radio's is om een opsie uit baie te kies.
Gedeaktiveerde merkblokkies en radio's word ondersteun. Die disabledkenmerk sal 'n ligter kleur toepas om die toevoer se toestand aan te dui.
Merkblokkies en radioknoppies ondersteun HTML-gebaseerde vormvalidering en verskaf bondige, toeganklike etikette. As sodanig is ons <input>s en <label>s broers en susters elemente in teenstelling met 'n <input>binne 'n <label>. Dit is effens meer breedvoerig aangesien jy moet spesifiseer iden forkenmerke om die <input>en in verband te bring <label>.
Verstek (gestapel)
By verstek sal enige aantal merkblokkies en radio's wat onmiddellike broers en susters is, vertikaal gestapel word en toepaslik gespasieer word met .form-check.
In lyn
Groepeer merkblokkies of radio's op dieselfde horisontale ry deur by .form-check-inlineenige .form-check.
Sonder etikette
Voeg .position-staticby invoere binne .form-checkwat geen etiketteks het nie. Onthou om steeds 'n vorm van etiket vir ondersteunende tegnologieë te verskaf (byvoorbeeld deur gebruik te maak van aria-label).
Uitleg
Aangesien Bootstrap van toepassing is display: blocken width: 100%op byna al ons vormkontroles, sal vorms by verstek vertikaal gestapel word. Bykomende klasse kan gebruik word om hierdie uitleg op 'n per-vorm basis te verander.
Vorm groepe
Die .form-groupklas is die maklikste manier om struktuur by vorms te voeg. Dit bied 'n buigsame klas wat behoorlike groepering van etikette, kontroles, opsionele hulpteks en vormvalideringsboodskappe aanmoedig. By verstek is dit slegs van toepassing margin-bottom, maar dit tel bykomende style in .form-inlinesoos nodig. Gebruik dit met <fieldset>s, <div>s, of byna enige ander element.
Vorm rooster
Meer komplekse vorms kan gebou word deur ons roosterklasse te gebruik. Gebruik dit vir vormuitlegte wat veelvuldige kolomme, verskillende breedtes en bykomende belyningsopsies benodig.
Vorm ry
Jy kan ook ruil .rowvir .form-row, 'n variasie van ons standaard-roosterry wat die verstekkolomgeute ignoreer vir strenger en meer kompakte uitlegte.
Meer komplekse uitlegte kan ook met die roosterstelsel geskep word.
Horisontale vorm
Skep horisontale vorms met die rooster deur die .rowklas by te voeg om groepe te vorm en die .col-*-*klasse te gebruik om die breedte van jou etikette en kontroles te spesifiseer. Maak seker dat jy ook .col-form-labelby jou <label>s voeg sodat hulle vertikaal gesentreer is met hul verwante vormkontroles.
Soms moet jy dalk marge- of opvullingshulpmiddels gebruik om die perfekte belyning te skep wat jy nodig het. Ons het byvoorbeeld die padding-topetiket op ons gestapelde radio-insette verwyder om die teksbasislyn beter te belyn.
Horisontale vorm etiket grootte
Maak seker dat jy .col-form-label-smof .col-form-label-lgna jou <label>s of <legend>s gebruik om die grootte van .form-control-lgen korrek te volg .form-control-sm.
Kolomgrootte
Soos in die vorige voorbeelde getoon, laat ons roosterstelsel jou toe om enige aantal .cols binne 'n .rowof te plaas .form-row. Hulle sal die beskikbare breedte eweredig tussen hulle verdeel. Jy kan ook 'n subset van jou kolomme kies om meer of minder spasie op te neem, terwyl die oorblywende .cols die res eweredig verdeel, met spesifieke kolomklasse soos .col-7.
Outo-grootte
Die voorbeeld hieronder gebruik 'n flexbox-nutsding om die inhoud vertikaal te sentreer en verander .colna .col-autosodat jou kolomme net soveel spasie opneem as wat nodig is. Anders gestel, die kolom groottes self gebaseer op die inhoud.
Jy kan dit dan weer meng met grootte-spesifieke kolomklasse.
Gebruik die .form-inlineklas om 'n reeks etikette, vormkontroles en knoppies op 'n enkele horisontale ry te vertoon. Vormkontroles binne inlynvorms verskil effens van hul verstektoestande.
Kontroles is display: flexom enige HTML-wit spasie in te vou en jou in staat te stel om belyningsbeheer met spasiëring en flexbox- nutsmiddels te verskaf.
Kontroles en invoergroepe ontvang width: autoom die Bootstrap-standaard te ignoreer width: 100%.
Kontroles verskyn net inlyn in kykpoorte wat ten minste 576px wyd is om vir noue uitsigpoorte op mobiele toestelle rekening te hou.
Jy sal dalk die breedte en belyning van individuele vormkontroles met die spasiëringhulpmiddels moet aanspreek (soos hieronder getoon). Laastens, maak seker dat jy altyd 'n <label>by elke vormkontrole insluit, selfs al moet jy dit wegsteek vir nie-skermleserbesoekers met .sr-only.
Pasgemaakte vormkontroles en keuses word ook ondersteun.
Alternatiewe vir versteekte etikette
Hulptegnologieë soos skermlesers sal probleme met jou vorms hê as jy nie 'n etiket vir elke invoer insluit nie. Vir hierdie inlynvorms kan jy die byskrifte versteek deur die .sr-onlyklas te gebruik. Daar is verdere alternatiewe metodes om 'n etiket vir ondersteunende tegnologieë te verskaf, soos die aria-label, aria-labelledbyof titlekenmerk. Indien nie een van hierdie teenwoordig is nie, kan ondersteunende tegnologie gebruik maak van die placeholderkenmerk, indien teenwoordig, maar let daarop dat die gebruik daarvan placeholderas 'n plaasvervanger vir ander etiketteringmetodes nie aangeraai word nie.
Hulp teks
Blokvlak-hulpteks in vorms kan geskep word deur .form-text(voorheen bekend as .help-blockin v3). Inlyn-hulpteks kan buigsaam geïmplementeer word deur enige inlyn HTML-element en nutsklasse soos .text-muted.
Assosieer hulpteks met vormkontroles
Hulpteks moet uitdruklik geassosieer word met die vormkontrole waarmee dit verband hou met die gebruik van die aria-describedbykenmerk. Dit sal verseker dat ondersteunende tegnologieë – soos skermlesers – hierdie hulpteks sal aankondig wanneer die gebruiker fokus of die beheer betree.
Hulpteks onder insette kan met .form-text. Hierdie klas sluit in display: blocken voeg 'n paar boonste marge by vir maklike spasiëring van die insette hierbo.
Jou wagwoord moet 8-20 karakters lank wees, letters en syfers bevat en moet nie spasies, spesiale karakters of emosiekone bevat nie.
Inlyn teks kan enige tipiese inlyn HTML-element gebruik (of dit nou 'n <small>, <span>, of iets anders is) met niks meer as 'n nutsklas nie.
Gestremde vorms
Voeg die disabledBoolese kenmerk by 'n invoer om gebruikersinteraksies te voorkom en dit ligter te laat lyk.
Voeg die disabledkenmerk by a <fieldset>om al die kontroles binne te deaktiveer.
Waarskuwing met ankers
By verstek sal blaaiers alle inheemse vormkontroles ( <input>, <select>en <button>elemente) binne 'n <fieldset disabled>as gedeaktiveer hanteer, wat beide sleutelbord- en muisinteraksies op hulle voorkom. As jou vorm egter ook <a ... class="btn btn-*">elemente insluit, sal dit slegs 'n styl van kry pointer-events: none. Soos opgemerk in die afdeling oor gedeaktiveerde toestand vir knoppies (en spesifiek in die onderafdeling vir ankerelemente), is hierdie CSS-eienskap nog nie gestandaardiseer nie en word dit nie ten volle in Internet Explorer 10 ondersteun nie, en sal dit nie verhoed dat sleutelbordgebruikers in staat is om hierdie skakels te fokus of te aktiveer. Om veilig te wees, gebruik persoonlike JavaScript om sulke skakels te deaktiveer.
Kruisblaaierversoenbaarheid
Terwyl Bootstrap hierdie style in alle blaaiers sal toepas, ondersteun Internet Explorer 11 en hieronder nie die disabledkenmerk op 'n <fieldset>. Gebruik pasgemaakte JavaScript om die veldstel in hierdie blaaiers te deaktiveer.
Bekragtiging
Verskaf waardevolle, uitvoerbare terugvoer aan jou gebruikers met HTML5-vormbekragtiging – beskikbaar in al ons ondersteunde blaaiers . Kies uit die blaaier verstek validering terugvoer, of implementeer pasgemaakte boodskappe met ons ingeboude klasse en begin JavaScript.
Ons beveel tans aan om gepasmaakte valideringstyle te gebruik, aangesien inheemse blaaier verstek valideringsboodskappe nie konsekwent aan ondersteunende tegnologieë in alle blaaiers blootgestel word nie (veral Chrome op rekenaars en mobiele toestelle).
Hoe dit werk
Hier is hoe vormvalidering met Bootstrap werk:
HTML-vorm validering word toegepas via CSS se twee pseudo-klasse, :invaliden :valid. Dit is van toepassing op <input>, <select>, en <textarea>elemente.
Bootstrap omvang die :invaliden :validstyle na ouerklas .was-validated, gewoonlik toegepas op die <form>. Andersins verskyn enige vereiste veld sonder 'n waarde as ongeldig tydens bladsylaai. Op hierdie manier kan jy kies wanneer om hulle te aktiveer (gewoonlik nadat die vorm ingedien is).
Om die voorkoms van die vorm terug te stel (byvoorbeeld in die geval van dinamiese vormvoorleggings wat AJAX gebruik), verwyder die .was-validatedklas van die <form>weer na indiening.
As 'n terugval, .is-invaliden .is-validklasse kan gebruik word in plaas van die pseudo-klasse vir bedienerkant-validering . Hulle benodig nie 'n .was-validatedouerklas nie.
As gevolg van beperkings in hoe CSS werk, kan ons (tans) nie style toepas op 'n <label>wat voor 'n vormbeheer in die DOM kom sonder die hulp van pasgemaakte JavaScript nie.
Alle moderne blaaiers ondersteun die beperking validering API , 'n reeks JavaScript-metodes vir die validering van vormkontroles.
Terugvoerboodskappe kan die blaaierverstekstellings gebruik ( verskillende vir elke blaaier, en onstyleerbaar via CSS) of ons pasgemaakte terugvoerstyle met bykomende HTML en CSS.
Jy kan pasgemaakte geldigheidsboodskappe setCustomValidityin JavaScript verskaf.
Met dit in gedagte, oorweeg die volgende demo's vir ons pasgemaakte vormvalidasiestyle, opsionele bedienerkantklasse en blaaierverstekings.
Pasgemaakte style
Vir pasgemaakte Bootstrap-vorm-bekragtigingboodskappe, sal jy die novalidateBooleaanse kenmerk by jou <form>. Dit deaktiveer die blaaier se verstekterugvoernutswenke, maar bied steeds toegang tot die vormvaliderings-API's in JavaScript. Probeer om die vorm hieronder in te dien; ons JavaScript sal die indien-knoppie onderskep en terugvoer aan jou oordra. Wanneer jy probeer indien, sal jy die :invaliden :validstyle sien wat op jou vormkontroles toegepas word.
Pasgemaakte terugvoerstyle pas pasgemaakte kleure, grense, fokusstyle en agtergrondikone toe om terugvoer beter te kommunikeer. Agtergrond ikone vir <select>s is slegs beskikbaar met .custom-select, en nie .form-control.
Blaaier verstek
Stel u nie belang in gepasmaakte validering-terugvoerboodskappe of die skryf van JavaScript om vormgedrag te verander nie? Alles goed, jy kan die blaaier verstekke gebruik. Probeer om die vorm hieronder in te dien. Afhangende van jou blaaier en bedryfstelsel, sal jy 'n effens ander styl van terugvoer sien.
Alhoewel hierdie terugvoerstyle nie met CSS gestileer kan word nie, kan jy steeds die terugvoerteks deur JavaScript pasmaak.
Bedienerkant
Ons beveel aan om kliënt-kant-validering te gebruik, maar as jy bedienerkant-validering benodig, kan jy ongeldige en geldige vormvelde met .is-invaliden aandui .is-valid. Let daarop dat .invalid-feedbackdit ook met hierdie klasse ondersteun word.
Ondersteunde elemente
Bekragtigingstyle is beskikbaar vir die volgende vormkontroles en komponente:
<input>s en <textarea>s met .form-control(insluitend tot een .form-controlin invoergroepe)
<select>s met .form-controlof.custom-select
.form-checks
.custom-checkboxs en .custom-radios
.custom-file
Gereedskapwenke
As jou vormuitleg dit toelaat, kan jy die .{valid|invalid}-feedbackklasse vir .{valid|invalid}-tooltipklasse omruil om valideringterugvoer in 'n gestileerde nutswenk te vertoon. Maak seker dat jy 'n ouer position: relativedaarop het vir nutspunt-posisionering. In die voorbeeld hieronder het ons kolomklasse dit reeds, maar jou projek mag dalk 'n alternatiewe opstelling vereis.
Pasmaak
Bekragtigingstate kan aangepas word via Sass met die $form-validation-stateskaart. Geleë in ons _variables.scsslêer, word hierdie Sass-kaart oorgelus om die verstek- valid/ invalidvalideringstoestande te genereer. Ingesluit is 'n geneste kaart om elke staat se kleur en ikoon aan te pas. Alhoewel geen ander state deur blaaiers ondersteun word nie, kan diegene wat pasgemaakte style gebruik maklik meer komplekse vormterugvoer byvoeg.
Neem asseblief kennis dat ons nie aanbeveel om hierdie waardes aan te pas sonder om ook die form-validation-statemengin te wysig nie.
Pasgemaakte vorms
Vir nog meer aanpassing en kruisblaaier-konsekwentheid, gebruik ons heeltemal pasgemaakte vormelemente om die blaaier-standaarde te vervang. Hulle is bo-op semantiese en toeganklike opmaak gebou, so hulle is soliede plaasvervangers vir enige verstekvormbeheer.
Merkblokkies en radio's
Elke merkblokkie en radio <input>en <label>paring is toegedraai in 'n <div>om ons persoonlike beheer te skep. Struktureel is dit dieselfde benadering as ons standaard .form-check.
Ons gebruik die broer of suster ( ~) vir al ons <input>state—soos— :checkedom ons pasgemaakte vormaanwyser behoorlik te styl. Wanneer dit met die klas gekombineer .custom-control-labelword, kan ons ook die teks vir elke item styl op grond van die <input>se toestand.
Ons verberg die verstek <input>met opacityen gebruik die .custom-control-labelom 'n nuwe pasgemaakte vormaanwyser in sy plek met ::beforeen te bou ::after. Ongelukkig kan ons nie 'n pasgemaakte een van net die bou nie, <input>want CSS'e contentwerk nie op daardie element nie.
In die gemerkte state gebruik ons base64 ingebedde SVG-ikone van Open Iconic . Dit bied ons die beste beheer vir stilering en posisionering oor blaaiers en toestelle.
Merkblokkies
Gepasmaakte merkblokkies kan ook die :indeterminatepseudo-klas gebruik wanneer dit met die hand ingestel word via JavaScript (daar is geen beskikbare HTML-kenmerk om dit te spesifiseer nie).
As jy jQuery gebruik, behoort iets soos hierdie voldoende te wees:
Radio's
In lyn
Gestrem
Gepasmaakte merkblokkies en radio's kan ook gedeaktiveer word. Voeg die disabledBoolese kenmerk by die <input>en die pasgemaakte aanwyser en etiketbeskrywing sal outomaties gestileer word.
Skakelaars
'n Skakelaar het die opmaak van 'n pasgemaakte merkblokkie, maar gebruik die .custom-switchklas om 'n wisselskakelaar te lewer. Skakelaars ondersteun ook die disabledkenmerk.
Kies spyskaart
Pasgemaakte <select>spyskaarte benodig slegs 'n pasgemaakte klas .custom-selectom die pasgemaakte style te aktiveer. Pasgemaakte style is beperk tot die <select>aanvanklike voorkoms en kan nie die <option>s verander nie weens blaaierbeperkings.
Jy kan ook kies uit klein en groot persoonlike keuses om by ons soortgelyke grootte teksinvoer te pas.
Die multiplekenmerk word ook ondersteun:
Soos die sizekenmerk:
Reeks
Skep pasgemaakte <input type="range">kontroles met .custom-range. Die snit (die agtergrond) en duim (die waarde) is albei gestileer om dieselfde oor blaaiers te vertoon. Aangesien slegs IE en Firefox die "vul" van hul spoor van die linker- of regterkant van die duim ondersteun as 'n manier om visueel vordering aan te dui, ondersteun ons dit nie tans nie.
Reeksinsette het implisiete waardes vir minen max- 0en 100, onderskeidelik. Jy kan nuwe waardes spesifiseer vir diegene wat die minen maxkenmerke gebruik.
By verstek "snap" reeksinsette na heelgetalwaardes. Om dit te verander, kan jy 'n stepwaarde spesifiseer. In die voorbeeld hieronder verdubbel ons die aantal stappe deur step="0.5".
Lêerblaaier
Die aanbevole inprop om persoonlike lêerinvoer te animeer: bs-custom-file-input , dit is wat ons tans hier in ons dokumente gebruik.
Die lêerinvoer is die mees knoestige van die klomp en vereis bykomende JavaScript as jy hulle wil koppel met funksionele Kies lêer ... en geselekteerde lêernaamteks.
Ons versteek die versteklêer <input>via opacityen styleer eerder die <label>. Die knoppie word gegenereer en geposisioneer met ::after. Laastens verklaar ons 'n widthen heightop die <input>vir behoorlike spasiëring vir omliggende inhoud.
Vertaal of pasmaak van die snare met SCSS
Die :lang()pseudo-klas word gebruik om die vertaling van die "Blaai"-teks in ander tale moontlik te maak. Ignoreer of voeg inskrywings by die $custom-file-textSass-veranderlike met die relevante taalmerker en gelokaliseerde stringe. Die Engelse snare kan op dieselfde manier aangepas word. Byvoorbeeld, hier is hoe 'n mens 'n Spaanse vertaling kan byvoeg (Spaans se taalkode ises ):
Hier is lang(es)in aksie oor die pasgemaakte lêerinvoer vir 'n Spaanse vertaling:
Jy sal die taal van jou dokument (of subboom daarvan) korrek moet stel sodat die korrekte teks gewys kan word. Dit kan gedoen word met behulp van die langkenmerk op die <html>element of die Content-LanguageHTTP-kopskrif , onder andere metodes.
Vertaal of pasmaak van die snare met HTML
Bootstrap bied ook 'n manier om die "Blaai"-teks in HTML te vertaal met die data-browsekenmerk wat by die pasgemaakte invoeretiket gevoeg kan word (voorbeeld in Nederlands):