Beispiller a Benotzungsrichtlinne fir Form Kontrollstiler, Layoutoptiounen a personaliséiert Komponenten fir eng grouss Varietéit vu Formen ze kreéieren.
Iwwersiicht
Bootstrap Form Kontrollen erweideren eis Rebooted Form Stiler mat Klassen. Benotzt dës Klassen fir op hir personaliséiert Affichage ze wielen fir eng méi konsequent Rendering iwwer Browser an Apparater.
Gitt sécher e passenden typeAttribut op all Input ze benotzen (zB emailfir E-Mailadress oder numberfir numeresch Informatioun) fir vun neien Input Kontrollen wéi E-Mail Verifizéierung, Zuelauswiel a méi ze profitéieren.
Hei ass e séier Beispill fir Bootstrap Formstiler ze demonstréieren. Liest weider fir Dokumentatioun iwwer erfuerderlech Klassen, Formlayout a méi.
Form Kontrollen
Textuell Form Kontrollen - wéi <input>s, <select>s, an s - si mat der Klass <textarea>styléiert . .form-controlAbegraff sinn Stiler fir allgemeng Erscheinung, Fokuszoustand, Gréisst a méi.
Ginn sécher eis Mooss Formen ze entdecken fir weider Stil <select>s.
Fir Dateieinputen, tauscht de .form-controlfir .form-control-file.
Gréisst
Set Héichten mat Klassen wéi .form-control-lgan .form-control-sm.
Nëmme liesen
Füügt de readonlybooleschen Attribut op en Input fir d'Ännerung vum Wäert vum Input ze vermeiden. Lies-nëmmen Input schéngen méi hell (just wéi behënnert Input), awer behalen de Standard Cursor.
Nëmmen einfachen Text
Wann Dir <input readonly>Elementer an Ärer Form als Kloertext stylesch wëllt hunn, benotzt d' .form-control-plaintextKlass fir de Standardformfeldstil ze läschen an déi richteg Margin a Padding ze bewahren.
Range Input
Setzt horizontal scrollbar Range-Inputen mat .form-control-range.
Checkboxen a Radioen
Standardcheckboxen a Radios ginn verbessert mat der Hëllef vun .form-checkenger eenzeger Klass fir béid Inputtypen déi de Layout an d'Behuele vun hiren HTML Elementer verbessert . Checkboxe si fir eng oder e puer Optiounen an enger Lëscht ze wielen, während Radios sinn fir eng Optioun aus ville ze wielen.
Behënnerte Checkboxen a Radios ginn ënnerstëtzt, awer fir e not-allowedCursor beim Hover vum Elterendeel ze bidden <label>, musst Dir d' disabledAttribut op d' .form-check-input. De behënnerte Attribut wäert eng méi hell Faarf uwenden fir ze hëllefen den Zoustand vum Input unzeginn.
Checkboxen a Radios benotze si gebaut fir HTML-baséiert Formvalidatioun z'ënnerstëtzen a präzis, zougänglech Etiketten ze bidden. Als esou sinn eis <input>s an <label>s Geschwësterelementer am Géigesaz zu engem <input>bannent engem <label>. Dëst ass e bësse méi verbose wéi Dir musst spezifizéieren idan forAttributer fir den <input>an ze verbannen <label>.
Standard (gestapelt)
Par défaut gëtt all Zuel vu Checkboxen a Radioen déi direkt Geschwëster sinn vertikal gestapelt a passend mat .form-check.
An der Schlaang
Gruppéiert Checkboxen oder Radios op der selwechter horizontaler Zeil andeems Dir .form-check-inlineop all .form-check.
Ouni Etiketten
Füügt .position-staticun Inputen an .form-checkdéi kee Labeltext hunn. Denkt drun nach ëmmer eng Form vu Label fir Hëllefstechnologien ze bidden (zum Beispill mat aria-label).
Layout
Zënter Bootstrap gëlt display: blocka width: 100%fir bal all eis Form Kontrollen, Forme ginn standardiséiert vertikal gestapelt. Zousätzlech Klassen kënne benotzt ginn fir dëse Layout op enger Performbasis ze variéieren.
Form Gruppen
D' .form-groupKlass ass deen einfachste Wee fir eng Struktur op Formen ze addéieren. Et bitt eng flexibel Klass, déi richteg Gruppéierung vun Etiketten, Kontrollen, optional Hëllefstext a Formvalidatiounsmessage encouragéiert. Par défaut gëllt et nëmmen margin-bottom, awer et hëlt zousätzlech Stiler op .form-inlinewéi néideg. Benotzt et mat <fieldset>s, <div>s oder bal all aner Element.
Form Gitter
Méi komplex Forme kënne mat eise Gitterklassen gebaut ginn. Benotzt dës fir Form Layouten déi verschidde Kolonnen, variéiert Breeten an zousätzlech Ausriichtungsoptiounen erfuerderen.
Form Rei
Dir kënnt och tauschen .rowfir .form-row, eng Variatioun vun eiser Standard Gitterrei, déi d'Standard Kolonnrennen iwwerschreift fir méi enk a méi kompakt Layouten.
Méi komplex Layouten kënnen och mam Gittersystem erstallt ginn.
Horizontal Form
Erstellt horizontale Forme mam Gitter andeems Dir d' .rowKlass bäidréit fir Gruppen ze bilden an d' .col-*-*Klassen ze benotzen fir d'Breet vun Ären Etiketten a Kontrollen ze spezifizéieren. Gitt sécher och .col-form-labelop Är <label>s ze addéieren sou datt se vertikal mat hiren assoziéierte Formkontrolle zentréiert sinn.
Heiansdo musst Dir vläicht Margin oder Padding Utilities benotzen fir déi perfekt Ausrichtung ze kreéieren déi Dir braucht. Zum Beispill hu mir den padding-topop eisem gestapelten Radio-Input Label geläscht fir d'Textbaseline besser auszegläichen.
Horizontal Form Label Gréisst
Gitt sécher ze benotzen .col-form-label-smoder .col-form-label-lgop Är <label>s oder <legend>s fir d'Gréisst vun .form-control-lga richteg ze verfollegen .form-control-sm.
Kolonn Gréisst
Wéi an de fréiere Beispiller gewisen, erlaabt eise Gittersystem Iech all Zuel vu .cols bannent engem .rowoder .form-row. Si verdeelen déi verfügbar Breet gläich tëscht hinnen. Dir kënnt och e Subset vun Äre Kolonnen auswielen fir méi oder manner Plaz opzehuelen, während déi verbleiwen .cols de Rescht gläich opgedeelt hunn, mat spezifesche Kolonnklassen wéi .col-7.
Automatesch Gréisst
D'Beispill hei drënner benotzt e Flexbox Utility fir den Inhalt vertikal ze zentréieren an z'änneren .colsou .col-autodatt Är Kolonnen nëmmen esou vill Plaz ophuelen wéi néideg. Anescht gesot, d'Kolonngréisst selwer baséiert op den Inhalt.
Dir kënnt dat dann nach eng Kéier mat Gréisst-spezifesch Kolonn Klassen remixen.
Benotzt d' .form-inlineKlass fir eng Serie vun Etiketten, Form Kontrollen a Knäppercher op enger eenzeger horizontaler Zeil ze weisen. Form Kontrollen bannent Inline Formen variéieren liicht vun hire Standardzoustand.
D'Kontrollen sinn display: flex, zerbriechen all HTML Wäissraum an erlaabt Iech Ausriichtungskontrolle mat Abstands- a Flexbox- Utilities ze bidden.
Kontrollen an Inputgruppen kréien width: autofir de Bootstrap Standard ze iwwerschreiden width: 100%.
Kontrollen schéngen nëmmen inline an viewports datt op d'mannst 576px breet sinn fir eng Kont fir schmuel viewports op mobilen Apparater.
Dir musst vläicht d'Breet an d'Ausrichtung vun eenzelne Formkontrollen mat Abstands-Utilities manuell adresséieren (wéi hei ënnendrënner). Endlech, gitt sécher datt Dir ëmmer e <label>mat all Formkontrolle enthält, och wann Dir et vun Net-Screenreader Besucher verstoppe musst mat .sr-only.
Benotzerdefinéiert Form Kontrollen a wielt sinn och ënnerstëtzt.
Alternativen zu verstoppte Etiketten
Hëllefstechnologien wéi Écran Lieser wäerten Probleemer mat Äre Formulairen hunn wann Dir kee Label fir all Input enthält. .sr-onlyFir dës Inline Formen, kënnt Dir d'Etiketten mat der Klass verstoppen . Et gi weider alternativ Methoden fir e Label fir Hëllefstechnologien ze liwweren, sou wéi den aria-label, aria-labelledbyoder titleAttribut. Wann keng vun dësen präsent ass, kënnen Assistenztechnologien d' placeholderAttributer benotzen, wa präsent, awer bemierkt datt d'Benotzung vun placeholderals Ersatz fir aner Etikettéierungsmethoden net ugeroden ass.
Hëllef Text
Block-Niveau Hëllef Text a Formen kann erstallt ginn benotzt .form-text(virdrun bekannt als .help-blockv3). Inline Hëllefstext ka flexibel implementéiert ginn mat all Inline HTML Element an Utility Klassen wéi .text-muted.
Associéieren Hëllef Text mat Form Kontrollen
Hëllefstext soll explizit mat der Formkontrolle verbonne sinn, déi et mat der aria-describedbyAttribut benotzt. Dëst wäert suergen datt Assistenztechnologien - wéi Écran Lieser - dësen Hëllefstext annoncéieren wann de Benotzer fokusséiert oder an d'Kontroll erakënnt.
Hëllef Text ënnert Input kann mat stylesch ginn .form-text. Dës Klass enthält display: blocka füügt e puer Topmarge fir einfach Ofstand vun den Inputen uewen.
Äert Passwuert muss 8-20 Zeeche laang sinn, Buschtawen an Zuelen enthalen an däerf keng Plazen, speziell Zeechen oder Emoji enthalen.
Inline Text kann all typesch Inline HTML Element benotzen (sief et en <small>, <span>, oder soss eppes) mat näischt méi wéi eng Utility Klass.
Behënnert Formen
Füügt de disabledbooleschen Attribut op en Input fir Benotzerinteraktiounen ze vermeiden an et méi hell ze maachen.
Füügt den disabledAttribut zu engem <fieldset>fir all d'Kontrollen bannen auszeschalten.
Opgepasst mat Anker
Par défaut behandelen d'Browser all gebierteg Form Kontrollen ( <input>, <select>an <button>Elementer) bannent engem <fieldset disabled>als behënnert, verhënnert souwuel Tastatur- a Mausinteraktiounen op hinnen. Wann Är Form awer och <a ... class="btn btn-*">Elementer enthält, ginn dës nëmmen e Stil vun pointer-events: none. Wéi an der Rubrik iwwer behënnert Staat fir Knäppercher festgestallt (a speziell an der Ënnersektioun fir Ankerelementer), ass dës CSS Eegeschafte nach net standardiséiert an ass net voll ënnerstëtzt am Internet Explorer 10, a wäert net verhënneren datt Tastatur Benotzer sinn kënnen dës Linken fokusséieren oder aktivéieren. Also fir sécher ze sinn, benotzt personaliséiert JavaScript fir sou Linken auszeschalten.
Cross-Browser Kompatibilitéit
Wärend Bootstrap dës Stiler an all Browser applizéiert, ënnerstëtzen Internet Explorer 11 an ënner net voll den disabledAttribut op engem <fieldset>. Benotzt personaliséiert JavaScript fir de Feldset an dëse Browser auszeschalten.
Validatioun
Bitt wäertvoll, handhabbare Feedback un Är Benotzer mat HTML5 Form Validatioun - verfügbar an all eise ënnerstëtzte Browser . Wielt aus dem Browser Standard Validatioun Feedback, oder implementéiert personaliséiert Messagen mat eise agebaute Klassen a Starter JavaScript.
Mir recommandéieren de Moment personaliséiert Validatiounsstiler ze benotzen, well gebierteg Browser Standard Validatiounsmeldungen net konsequent un Assistenztechnologien an all Browser ausgesat sinn (virun allem Chrome op Desktop an Handy).
Wéi et funktionnéiert
Hei ass wéi d'Formvalidatioun mat Bootstrap funktionnéiert:
HTML Form Validatioun gëtt iwwer CSS zwou Pseudo-Klassen applizéiert, :invalidan :valid. Et gëllt fir <input>, <select>, an <textarea>Elementer.
Bootstrap scopes der :invalida :validStiler zu Elterendeel .was-validatedKlass, normalerweis applizéiert op d' <form>. Soss gëtt all erfuerdert Feld ouni Wäert als ongëlteg op der Säitlaascht gewisen. Op dës Manéier kënnt Dir wielen wéini se ze aktivéieren (typesch nodeems d'Formuléierung versicht ass).
Fir d'Erscheinung vum Formulaire zréckzetrieden (zum Beispill am Fall vun dynamesche Formuléierunge mat AJAX), läscht d' .was-validatedKlass aus der <form>erëm no der Soumissioun.
Als Réckfall, .is-invalida .is-validKlassen kënnen amplaz vun de Pseudo-Klassen fir Server Säit Validatioun benotzt ginn . Si erfuerderen keng .was-validatedElterenklass.
Wéinst Aschränkungen a wéi CSS funktionnéiert, kënne mir (am Moment) Stiler net applizéieren op eng <label>déi virun enger Form Kontroll an der DOM kënnt ouni d'Hëllef vu personaliséierten JavaScript.
All modern Browser ënnerstëtzen d' Constraint Validation API , eng Serie vu JavaScript Methoden fir d'Validatioun vun Form Kontrollen.
Feedback Messagen kënnen d' Browser Defaults benotzen (ënnerscheed fir all Browser, an onstylbar iwwer CSS) oder eis personaliséiert Feedback Stiler mat zousätzlech HTML an CSS.
Dir kënnt personaliséiert Validitéit Messagen mat setCustomValidityJavaScript ubidden.
Mat deem vergiessen, betruecht déi folgend Demos fir eis personaliséiert Form Validatioun Stiler, optional Server Säit Klassen, a Browser Default.
Benotzerdefinéiert Stiler
Fir personaliséiert Bootstrap Form Validatioun Messagen, musst Dir de novalidatebooleschen Attribut op Är <form>. Dëst deaktivéiert de Browser Standardfeedback Tooltipps, awer gëtt ëmmer nach Zougang zu de Formvalidatiouns-APIs a JavaScript. Probéiert de Formulaire hei drënner ofzeginn; eis JavaScript interceptéiert de Submit Button a relais Feedback un Iech.
Wann Dir probéiert ofzeginn, gesitt Dir d' Stiler :invalida :validStiler op Är Form Kontrollen applizéiert.
Browser Defaults
Net interesséiert fir personaliséiert Validatioun Feedback Messagen oder JavaScript ze schreiwen fir Form Verhalen z'änneren? Alles gutt, Dir kënnt de Browser Default benotzen. Probéiert de Formulaire hei drënner ofzeginn. Ofhängeg vun Ärem Browser an OS, gesitt Dir e bëssen anere Feedbackstil.
Wärend dës Feedbackstiler net mat CSS stylesch kënne ginn, kënnt Dir ëmmer nach de Feedbacktext duerch JavaScript personaliséieren.
Server Säit
Mir recommandéieren e benotzen Client Säit Validatioun, mä am Fall wou Dir Server Säit verlaangen, Dir kënnt ongëlteg a valabel Form Felder mat .is-invalidan uginn .is-valid. Notéiert datt .invalid-feedbackoch mat dëse Klassen ënnerstëtzt gëtt.
Ënnerstëtzt Elementer
Eis Beispill Forme weisen gebierteg textuell <input>s uewen, awer Form Validatioun Stiler sinn fir eis personaliséiert Form Kontrollen, ze.
Tooltips
Wann Äre Formulaire Layout et erlaabt, kënnt Dir d' .{valid|invalid}-feedbackKlassen fir .{valid|invalid}-tooltipKlassen austauschen fir Validatiounsfeedback an engem styleschen Tooltip ze weisen. Ginn sécher engem Elterendeel mat position: relativeop et fir tooltip Positionéierung. Am Beispill hei drënner hunn eis Kolonnklassen dëst schonn, awer Äre Projet kann en alternativen Setup erfuerderen.
Benotzerdefinéiert Formen
Fir nach méi Personnalisatioun a Cross-Browser Konsistenz, benotzt eis komplett personaliséiert Formelementer fir d'Browserdefaults ze ersetzen. Si sinn uewen op semanteschen an zougängleche Markup gebaut, sou datt se zolidd Ersatz fir all Standardformkontrolle sinn.
Checkboxen a Radioen
All Checkbox a Radio ass an engem <div>mat engem Geschwëster gewéckelt <span>fir eis personaliséiert Kontroll ze kreéieren an e <label>fir de begleedenden Text. Strukturell ass dëst déiselwecht Approche wéi eis Standard .form-check.
Mir benotzen de Geschwësterwieler ( ~) fir all eis <input>Staaten - wéi :checked- fir eis personaliséiert Formindikator richteg ze styléieren. Wa mir mat der .custom-control-labelKlass kombinéiert sinn, kënne mir och den Text fir all Element styléieren op Basis <input>vum Zoustand.
Mir verstoppen d'Default <input>mat opacitya benotzen de .custom-control-labelfir en neie personaliséierte Formindikator op senger Plaz mat ::beforean ze bauen ::after. Leider kënne mir net e Benotzerdefinéiert aus just bauen <input>well CSS contentnet op deem Element funktionnéiert.
An de kontrolléierte Staaten benotze mir base64 embedded SVG Symboler vun Open Iconic . Dëst bitt eis déi bescht Kontroll fir Styling a Positionéierung iwwer Browser an Apparater.
Checkboxen
Benotzerdefinéiert Checkboxen kënnen och d' :indeterminatePseudo-Klass benotzen wann se manuell iwwer JavaScript gesat ginn (et gëtt kee verfügbaren HTML Attribut fir et ze spezifizéieren).
Wann Dir jQuery benotzt, sou eppes sollt duergoen:
Radioen
An der Schlaang
Behënnert
Benotzerdefinéiert Checkboxen a Radios kënnen och behënnert ginn. Füügt de disabledbooleschen Attribut un <input>an de personaliséierten Indikator an d'Labelbeschreiwung ginn automatesch stiléiert.
Wielt Menü
Benotzerdefinéiert <select>Menüe brauchen nëmmen eng personaliséiert Klass, .custom-selectfir déi personaliséiert Stiler auszeléisen. Benotzerdefinéiert Stiler si limitéiert op <select>den initialen Erscheinungsbild a kënnen d' <option>S net änneren wéinst Browserbeschränkungen.
Dir kënnt och vu klengen a grousse personaliséierte Selektioune wielen fir eis ähnlech Gréissten Textinputen ze passen.
Den multipleAttribut gëtt och ënnerstëtzt:
Wéi ass den sizeAttribut:
Range
Erstellt personaliséiert <input type="range">Kontrollen mat .custom-range. D'Streck (den Hannergrond) an den Daumen (de Wäert) sinn allebéid stylesch fir d'selwecht iwwer Browser ze erschéngen. Well nëmmen IE a Firefox ënnerstëtzen hir Streck vu lénks oder riets vum Daum ze "fillen" als Mëttel fir visuell Fortschrëtter ze weisen, ënnerstëtzen mir et am Moment net.
Range-Inputen hunn implizit Wäerter fir minan max- 0an 100, respektiv. Dir kënnt nei Wäerter spezifizéieren fir déi déi d' minAttributer maxbenotzen.
Par défaut, Gamme Input "snap" op ganz Zuelen Wäerter. Fir dëst z'änneren, kënnt Dir e stepWäert uginn. Am Beispill hei drënner verduebele mir d'Zuel vun de Schrëtt mat step="0.5".
Dateibrowser
D'Dateiinput ass dee schmuelste vun der Rëtsch a erfuerdert zousätzlech JavaScript wann Dir se mat funktionnelle Wielt Datei ukoppelen ... a gewielten Dateinumm Text.
Mir verstoppen d'Standarddatei <input>iwwer opacityan stattdessen de <label>. De Knäppchen gëtt generéiert a positionéiert mat ::after. Endlech erkläre mir eng widthan heightop der <input>fir adäquate Abstand fir Ëmgéigend Inhalt.
Iwwersetzen oder personaliséieren d'Strings
D' :lang()Pseudo-Klass gëtt benotzt fir d'Iwwersetzung vum "Browse" Text an aner Sproochen z'erméiglechen. Iwwerschreift oder füügt Entréen un d' $custom-file-textSass Variabel mat dem relevante Sproochetag a lokaliséierte Strings. Déi englesch Saiten kënnen op déiselwecht Manéier personaliséiert ginn. Zum Beispill, hei ass wéi een eng spuenesch Iwwersetzung derbäi kënnt (Spuenesch Sproochecode ass es):
Hei ass lang(es)an Handlung op de personaliséierte Dateiinput fir eng spuenesch Iwwersetzung:
Dir musst d'Sprooch vun Ärem Dokument (oder Ënnerbaum dovun) korrekt astellen, fir datt de richtegen Text ugewise gëtt. Dëst kann mat dem langAttribut am <html>Element oder dem Content-LanguageHTTP Header gemaach ginn, ënner anerem Methoden.