Foarbylden en gebrûksrjochtlinen foar formulierkontrôlestilen, opmaakopsjes en oanpaste komponinten foar it meitsjen fan in breed ferskaat oan formulieren.
Oersicht
De foarmkontrôles fan Bootstrap wreidzje út op ús Rebooted foarmstilen mei klassen. Brûk dizze klassen om te kiezen foar har oanpaste byldskermen foar in mear konsekwinte werjefte oer browsers en apparaten.
Wês wis dat jo in passend typeattribút brûke op alle ynputs (bygelyks emailfoar e-mailadres of numberfoar numerike ynformaasje) om foardiel te meitsjen fan nijere ynfierkontrôles lykas e-postferifikaasje, nûmerseleksje, en mear.
Hjir is in fluch foarbyld om de foarmstilen fan Bootstrap te demonstrearjen. Bliuw lêze foar dokumintaasje oer fereaske klassen, foarmyndieling, en mear.
Form kontrôles
Tekstfoarmkontrôles - lykas <input>s, <select>s en <textarea>s - wurde stylearre mei de .form-controlklasse. Ynbegrepen binne stilen foar algemiene uterlik, fokusstatus, maat, en mear.
Wês wis te ferkennen ús oanpaste foarmen om fierder styl <select>s.
Foar triem-ynfier, ruilje de .form-controlfoar .form-control-file.
Sizing
Stel hichten yn mei klassen lykas .form-control-lgen .form-control-sm.
Allinnich lêze
Foegje it readonlyBooleaanske attribút ta oan in ynfier om wiziging fan 'e wearde fan' e ynfier te foarkommen. Allinnich-lês-ynputs ferskine lichter (krekt as útskeakele yngongen), mar behâlde de standert rinnerke.
Allinnich lêzen platte tekst
As jo <input readonly>eleminten yn jo formulier stylearre hawwe wolle as platte tekst, brûk dan de .form-control-plaintextklasse om de standert formulierfjildstyling te ferwiderjen en de juste marzje en padding te behâlden.
Range Inputs
Stel horizontaal scrollbere berik-ynputen yn mei .form-control-range.
Checkboxes en radio's
Standert karfakjes en radio's wurde ferbettere mei help fan .form-check, ien klasse foar beide ynfiertypen dy't de yndieling en gedrach fan har HTML-eleminten ferbetteret . Checkboxes binne foar it selektearjen fan ien of meardere opsjes yn in list, wylst radio's binne foar it selektearjen fan ien opsje út in protte.
Utskeakele karfakjes en radio's wurde stipe. It disabledattribút sil in lichtere kleur tapasse om de steat fan 'e ynfier oan te jaan.
Checkboxes en radio-knoppen stypje HTML-basearre formuliervalidaasje en jouwe beknopte, tagonklike labels. As sadanich binne ús <input>s en <label>s sibling-eleminten yn tsjinstelling ta in <input>binnen in <label>. Dit is wat mear verbose as jo moatte opjaan iden forattributen om te relatearjen de <input>en <label>.
Standert (steapele)
Standert sil elk oantal karfakjes en radio's dy't direkte sibling binne fertikaal steapele wurde en op passende ôfstân mei .form-check.
Ynline
Groepearje karfakjes as radio's op deselde horizontale rige troch ta te foegjen .form-check-inlineoan elke .form-check.
Sûnder labels
Taheakje .position-staticoan ynputs binnen .form-checkdy't gjin labeltekst hawwe. Unthâld om noch in foarm fan label te leverjen foar assistinte technologyen (bygelyks gebrûk fan aria-label).
Opmaak
Sûnt Bootstrap jildt display: blocken width: 100%foar hast al ús formulierkontrôles, sille formulieren standert fertikaal steapele wurde. Oanfoljende klassen kinne brûkt wurde om dizze yndieling per formulier te feroarjen.
Formearje groepen
De .form-groupklasse is de maklikste manier om wat struktuer ta te foegjen oan formulieren. It biedt in fleksibele klasse dy't in goede groepearring fan etiketten, kontrôles, opsjonele helptekst en formuliervalidaasjeberjochten stimulearret. Standert jildt it allinich margin-bottom, mar it pakt ekstra stilen yn .form-inlineas nedich. Brûk it mei <fieldset>s, <div>s, of hast elk oar elemint.
Raster foarmje
Mear komplekse foarmen kinne wurde boud mei ús rasterklassen. Brûk dizze foar formulierlayouts dy't meardere kolommen, farieare breedtes en ekstra ôfstimmingsopsjes nedich binne.
Formearje rige
Jo kinne ek ruilje .rowfoar .form-row, in fariaasje fan ús standert rasterrige dy't de standert kolomgoaten oerskriuwt foar strakkere en kompakter opmaak.
Mear komplekse yndielingen kinne ek makke wurde mei it rastersysteem.
Horizontale foarm
Meitsje horizontale formulieren mei it raster troch de .rowklasse ta te foegjen om groepen te foarmjen en de .col-*-*klassen te brûken om de breedte fan jo labels en kontrôles op te jaan. Wês wis dat jo ek tafoegje .col-form-labeloan jo <label>s, sadat se fertikaal sintraal binne mei har assosjearre formulierkontrôles.
Soms moatte jo miskien marzje- of padding-hulpprogramma's brûke om dy perfekte ôfstimming te meitsjen dy't jo nedich binne. Wy hawwe bygelyks it padding-toplabel op ús opsteapele radio-ynputen fuortsmiten om de tekstbasisline better op te rjochtsjen.
Horizontale foarm label sizing
Wês wis dat jo .col-form-label-smof .col-form-label-lgnei jo <label>s of <legend>s brûke om de grutte fan .form-control-lgen korrekt te folgjen .form-control-sm.
Kolom grutte
Lykas yn 'e foargeande foarbylden sjen litten, lit ús rastersysteem jo elk oantal .cols binnen in .rowof pleatse .form-row. Se sille de beskikbere breedte gelyk tusken har splitse. Jo kinne ek in subset fan jo kolommen kieze om mear of minder romte yn te nimmen, wylst de oerbleaune .cols de rest lykweardich splitst, mei spesifike kolomklassen lykas .col-7.
Auto-sizing
It foarbyld hjirûnder brûkt in flexbox-helpmiddel om de ynhâld fertikaal te centreren en te feroarjen .colsadat .col-autojo kolommen allinich safolle romte ynnimme as nedich. Mei oare wurden, de kolom grutte sels basearre op de ynhâld.
Jo kinne dat dan nochris remixe mei grutte-spesifike kolomklassen.
Brûk de .form-inlineklasse om in searje labels, formulierkontrôles en knoppen op ien horizontale rige te werjaan. Formkontrôles binnen ynline formulieren fariearje in bytsje fan har standert steaten.
Kontrôles binne display: flex, it ynstoarten fan elke HTML-wytromte en kinne jo ôfstimmingskontrôle leverje mei spacing- en flexbox- hulpprogramma's.
Kontrôles en ynfiergroepen ûntfange width: autoom de Bootstrap-standert te oerskriuwen width: 100%.
Kontrôles ferskine allinich ynline yn viewports dy't op syn minst 576px breed binne om rekken te hâlden mei smelle viewports op mobile apparaten.
Jo moatte miskien de breedte en ôfstimming fan yndividuele formulierkontrôles manuell oanpakke mei spacing-helpprogramma's (lykas hjirûnder werjûn). As lêste, wês wis dat jo altyd in opnimme <label>mei elke formulierkontrôle, sels as jo it moatte ferbergje foar besikers mei net-skermlêzers mei .sr-only.
Oanpaste formulierkontrôles en seleksjes wurde ek stipe.
Alternativen foar ferburgen labels
Helpjende technologyen lykas skermlêzers sille problemen hawwe mei jo formulieren as jo gjin label foar elke ynfier opnimme. Foar dizze ynline formulieren kinne jo de labels ferbergje mei de .sr-onlyklasse. D'r binne fierdere alternative metoaden foar it leverjen fan in label foar assistinte technologyen, lykas de aria-label, aria-labelledbyof titleattribút. As net ien fan dizze oanwêzich is, kinne assistinte technologyen taflecht ta it brûken fan it placeholderattribút, as oanwêzich, mar tink derom dat it gebrûk fan placeholderas ferfanging foar oare etiketteringmetoaden net wurdt oanret.
Helptekst
Helptekst op bloknivo yn formulieren kin makke wurde mei .form-text(earder bekend as .help-blockyn v3). Inline helptekst kin fleksibel ymplementearre wurde mei elk ynline HTML-elemint en nutklassen lykas .text-muted.
Helptekst assosjearje mei formulierkontrôles
Helptekst moat eksplisyt ferbûn wurde mei de formulierkontrôle dy't it relatearret oan it brûken fan it aria-describedbyattribút. Dit sil derfoar soargje dat assistinte technologyen - lykas skermlêzers - dizze helptekst oankundigje as de brûker him rjochtet of de kontrôle yngiet.
Helptekst ûnder yngongen kin wurde stylearre mei .form-text. Dizze klasse omfettet display: blocken foeget wat topmarge ta foar maklike ôfstân fan 'e yngongen hjirboppe.
Jo wachtwurd moat 8-20 tekens lang wêze, letters en sifers befetsje, en moat gjin spaasjes, spesjale tekens of emoji befetsje.
Inline-tekst kin elk typysk ynline HTML-elemint brûke (of it no in <small>, <span>, of wat oars is) mei neat mear as in nutklasse.
Utskeakele formulieren
Foegje it disabledBooleaanske attribút ta oan in ynfier om ynteraksjes mei brûkers te foarkommen en it ljochter te meitsjen.
Foegje it disabledattribút oan in <fieldset>om alle kontrôles binnen út te skeakeljen.
Caveat mei ankers
Standert sille browsers alle native foarmkontrôles ( <input>, <select>en <button>eleminten) binnen in <fieldset disabled>as útskeakele behannelje, en foarkomt sawol toetseboerd as mûs ynteraksjes op har. As jo formulier lykwols ek <a ... class="btn btn-*">eleminten befettet, krije dizze allinich in styl fan pointer-events: none. Lykas opmurken yn 'e seksje oer útskeakele tastân foar knoppen (en spesifyk yn' e sub-seksje foar anker-eleminten), is dizze CSS-eigenskip noch net standerdisearre en wurdt net folslein stipe yn Internet Explorer 10, en sil net foarkomme dat toetseboerdbrûkers wurde kinne dizze keppelings fokusje of aktivearje. Dus om feilich te wêzen, brûk oanpaste JavaScript om sokke keppelings út te skeakeljen.
Cross-browser kompatibiliteit
disabledWylst Bootstrap dizze stilen sil tapasse yn alle browsers, stypje Internet Explorer 11 en hjirûnder it attribút net folslein op in <fieldset>. Brûk oanpaste JavaScript om de fjildset yn dizze browsers út te skeakeljen.
Validaasje
Jou weardefolle, aksjebere feedback oan jo brûkers mei HTML5-formuliervalidaasje - beskikber yn al ús stipe browsers . Kies út de standert falidaasjefeedback fan 'e browser, of ymplementearje oanpaste berjochten mei ús ynboude klassen en JavaScript foar starters.
Wy riede op it stuit oan om oanpaste falidaasjestilen te brûken, om't native browser standert falidaasjeberjochten net konsekwint bleatsteld wurde oan assistinte technologyen yn alle browsers (benammen Chrome op buroblêd en mobyl).
Hoe't it wurket
Hjir is hoe't formuliervalidaasje wurket mei Bootstrap:
HTML-formuliervalidaasje wurdt tapast fia de twa pseudoklassen fan CSS, :invaliden :valid. It jildt foar <input>, <select>, en <textarea>eleminten.
Bootstrap scopes de :invaliden :validstilen oan âlder .was-validatedklasse, meastal tapast op de <form>. Oars wurdt elk fereaske fjild sûnder in wearde te sjen as ûnjildich by sideladen. Op dizze manier kinne jo kieze wannear't jo se aktivearje wolle (meastentiids neidat it yntsjinjen fan formulier is besocht).
Om it uterlik fan it formulier werom te setten (bygelyks yn it gefal fan dynamyske yntsjinjen fan formulieren mei AJAX), ferwiderje de .was-validatedklasse fan 'e <form>wer nei yntsjinjen.
As in fallback, .is-invaliden .is-validklassen kinne brûkt wurde ynstee fan de pseudo-klassen foar tsjinner side falidaasje . Se hawwe gjin âlderklasse nedich .was-validated.
Troch beheiningen yn hoe't CSS wurket, kinne wy (op it stuit) gjin stilen tapasse op in <label>dat komt foar in formulierkontrôle yn 'e DOM sûnder help fan oanpaste JavaScript.
Alle moderne browsers stypje de betingstvalidaasje API , in searje JavaScript-metoaden foar it validearjen fan formulierkontrôles.
Feedbackberjochten kinne de browserstanderts brûke ( ferskillend foar elke browser, en net stylich fia CSS) as ús oanpaste feedbackstilen mei ekstra HTML en CSS.
Jo kinne berjochten foar oanpaste jildigens leverje setCustomValidityyn JavaScript.
Mei dat yn gedachten, beskôgje de folgjende demo's foar ús stilen foar validaasje fan oanpaste formulieren, opsjonele serversideklassen en browserstanderts.
Oanpaste stilen
Foar oanpaste berjochten foar validaasje fan Bootstrap-formulieren moatte jo it novalidateBooleaanske attribút tafoegje oan jo <form>. Dit skeakelet de browser standert feedback tooltips út, mar jout dochs tagong ta de formuliervalidaasje APIs yn JavaScript. Besykje it formulier hjirûnder yn te tsjinjen; ús JavaScript sil de knop yntsjinje ûnderskeppe en feedback nei jo trochjaan. As jo besykje yntsjinje, sille jo de stilen :invaliden :validsjen dy't tapast wurde op jo formulierkontrôles.
Oanpaste feedbackstilen tapasse oanpaste kleuren, rânen, fokusstilen en eftergrûnikoanen om feedback better te kommunisearjen. Eftergrûnikoanen foar <select>s binne allinnich beskikber mei .custom-select, en net .form-control.
Browser standerts
Net ynteressearre yn oanpaste validaasjefeedbackberjochten of JavaScript skriuwen om foarmgedrach te feroarjen? Alles goed, jo kinne de browserstanderts brûke. Besykje it formulier hjirûnder yn te stjoeren. Ofhinklik fan jo browser en OS, sille jo in wat oare styl fan feedback sjen.
Hoewol dizze feedbackstilen net mei CSS kinne wurde styleare, kinne jo de feedbacktekst noch oanpasse fia JavaScript.
Server side
Wy riede it brûken fan client-side falidaasje, mar yn gefal jo easkje server-side falidaasje, kinne jo oanjaan ûnjildige en jildich formulier fjilden mei .is-invaliden .is-valid. Tink derom dat .invalid-feedbackwurdt ek stipe mei dizze klassen.
Stipe eleminten
Validaasjestilen binne beskikber foar de folgjende formulierkontrôles en komponinten:
<input>s en <textarea>s mei .form-control(ynklusyf maksimaal ien .form-controlyn ynfiergroepen)
<select>s mei .form-controlof.custom-select
.form-checks
.custom-checkboxs en .custom-radios
.custom-file
Tooltips
As jo formulieropmaak it talit, kinne jo de .{valid|invalid}-feedbackklassen wikselje foar .{valid|invalid}-tooltipklassen om falidaasjefeedback te werjaan yn in stylige tooltip. Wês wis dat jo in âlder hawwe mei position: relativeop it foar tooltip posisjonearring. Yn it foarbyld hjirûnder hawwe ús kolomklassen dit al, mar jo projekt kin in alternative opset fereaskje.
Oanpasse
Validaasje steaten kinne wurde oanpast fia Sass mei de $form-validation-stateskaart. Lizzend yn ús _variables.scssbestân, wurdt dizze Sass-kaart oerlutsen om de standert valid/ invalidfalidaasjetastân te generearjen. Ynbegrepen is in nestele kaart foar it oanpassen fan de kleur en byldkaike fan elke steat. Wylst gjin oare steaten wurde stipe troch browsers, kinne dyjingen dy't oanpaste stilen brûke, maklik kompleksere formulierfeedback taheakje.
Tink derom dat wy dizze wearden net oanbefelje oan te passen sûnder ek de form-validation-statemixin te feroarjen.
Oanpaste formulieren
Foar noch mear oanpassing en konsistinsje fan crossbrowser, brûk ús folslein oanpaste formuliereleminten om de browserstanderts te ferfangen. Se binne boud boppe op semantyske en tagonklike markup, sadat se solide ferfangings binne foar elke standertfoarmkontrôle.
Checkboxes en radio's
Elts karfakje en radio <input>en <label>pairing wurdt ferpakt yn in <div>te meitsjen ús oanpaste kontrôle. Struktureel is dit deselde oanpak as ús standert .form-check.
Wy brûke de sibling-selektor ( ~) foar al ús <input>steaten - lykas :checked- om ús oanpaste formulierindikator goed te stylearjen. As kombinearre mei de .custom-control-labelklasse, kinne wy ek styl de tekst foar elk item basearre op <input>'e steat.
Wy ferbergje de standert <input>mei opacityen brûke de .custom-control-labelom in nije oanpaste formulieryndikator op syn plak te bouwen mei ::beforeen ::after. Spitigernôch kinne wy net bouwe in oanpaste ien fan krekt de <input>omdat CSS's contentnet wurket op dat elemint.
Yn de kontrolearre steaten brûke wy base64 ynbêde SVG-ikoanen fan Open Iconic . Dit jout ús de bêste kontrôle foar styling en posysjonearring oer browsers en apparaten.
Checkboxes
Oanpaste karfakjes kinne de :indeterminatepseudo-klasse ek brûke as se mei de hân ynsteld wurde fia JavaScript (d'r is gjin HTML-attribút beskikber om it oan te jaan).
As jo jQuery brûke, soe sokssawat wêze moatte:
Radios
Ynline
Ynvalide
Oanpaste karfakjes en radio's kinne ek útskeakele wurde. Foegje it disabledbooleanske attribút ta oan de <input>en de oanpaste yndikator en labelbeskriuwing wurde automatysk styled.
Switches
In switch hat de markup fan in oanpast karfakje, mar brûkt de .custom-switchklasse om in toggle switch te werjaan. Switches stypje ek it disabledattribút.
Selektearje menu
Oanpaste <select>menu's hawwe allinich in oanpaste klasse nedich, .custom-selectom de oanpaste stilen te triggerjen. Oanpaste stilen binne beheind ta it <select>earste uterlik fan 'e en kinne de s net wizigje <option>fanwegen browserbeperkingen.
Jo kinne ek kieze út lytse en grutte oanpaste seleksjes om oerien te kommen mei ús tekstynfier fan ferlykbere grutte.
It multipleattribút wurdt ek stipe:
As it sizeattribút is:
Berik
Meitsje oanpaste <input type="range">kontrôles mei .custom-range. It spoar (de eftergrûn) en tomme (de wearde) binne beide stylearre om itselde te ferskinen oer browsers. Om't allinich IE en Firefox it "folje" fan har spoar fan links of rjochts fan 'e tomme stypje as in middel om visueel foarútgong oan te jaan, stypje wy it op it stuit net.
Range-ynputen hawwe ymplisite wearden foar respektivelik minen max- 0en 100. Jo kinne nije wearden opjaan foar dyjingen dy't de attributen minen brûke.max
Standert, berik ynfier "snap" nei hiele wearden. Om dit te feroarjen, kinne jo in stepwearde opjaan. Yn it foarbyld hjirûnder ferdûbelje wy it oantal stappen troch te brûken step="0.5".
Triemblêder
De oanrikkemandearre plugin om oanpaste triemynfier te animearjen: bs-custom-file-input , dat is wat wy op it stuit brûke hjir yn ús dokuminten.
De bestânynfier is de meast knoffelichste fan it stel en fereasket ekstra JavaSkript as jo se wolle ferbine mei funksjoneel Kies bestân ... en selektearre triemnammetekst.
Wy ferbergje it standertbestân <input>fia opacityen stylje ynstee de <label>. De knop wurdt oanmakke en pleatst mei ::after. As lêste ferklearje wy in widthen heightop 'e <input>foar goede ôfstân foar omlizzende ynhâld.
Oersette of oanpasse de snaren mei SCSS
De :lang()pseudo-klasse wurdt brûkt om de oersetting fan de "Blêdzje" tekst yn oare talen mooglik te meitsjen. Ynstjoerings oerskriuwe of tafoegje oan 'e $custom-file-textSass-fariabele mei de oanbelangjende taaltag en lokale snaren. De Ingelske snaren kinne op deselde manier oanpast wurde. Hjir is bygelyks hoe't men in Spaanske oersetting taheakje kin (de taalkoade fan it Spaansk is es):
Hjir is lang(es)yn aksje op de oanpaste triem-ynfier foar in Spaanske oersetting:
Jo moatte de taal fan jo dokumint (of subbeam dêrfan) goed ynstelle om de juste tekst te sjen. Dit kin dien wurde mei it langattribút op it <html>elemint of de Content-LanguageHTTP-header , ûnder oare metoaden.
Oersette of oanpasse de snaren mei HTML
Bootstrap biedt ek in manier om de tekst "Blêdzje" yn HTML oer te setten mei it data-browseattribút dat kin wurde tafoege oan it oanpaste ynfierlabel (foarbyld yn it Nederlânsk):