Exempel och användningsriktlinjer för formulärkontrollstilar, layoutalternativ och anpassade komponenter för att skapa en mängd olika formulär.
Översikt
Bootstraps formulärkontroller expanderar på våra omstartade formulärstilar med klasser. Använd dessa klasser för att välja deras anpassade skärmar för en mer konsekvent rendering över webbläsare och enheter.
Se till att använda ett lämpligt typeattribut på alla ingångar (t.ex. emailför e-postadresser eller numberför numerisk information) för att dra nytta av nyare inmatningskontroller som e-postverifiering, nummerval och mer.
Här är ett snabbt exempel för att demonstrera Bootstraps formstilar. Fortsätt läsa för dokumentation om obligatoriska klasser, formulärlayout och mer.
Formulärkontroller
Textformkontroller – som <input>s, <select>s och <textarea>s – utformas med .form-controlklassen. Inkluderat är stilar för allmänt utseende, fokustillstånd, storlek och mer.
Var noga med att utforska våra anpassade formulär för att ytterligare styla <select>s.
För filinmatning, byt ut .form-controlmot .form-control-file.
Dimensionering
Ställ in höjder med klasser som .form-control-lgoch .form-control-sm.
Skrivskyddad
Lägg till det readonlybooleska attributet på en ingång för att förhindra modifiering av ingångens värde. Skrivskyddade ingångar ser ljusare ut (precis som inaktiverade ingångar), men behåller standardmarkören.
Skrivskyddad vanlig text
Om du vill ha <input readonly>element i ditt formulär utformade som vanlig text, använd .form-control-plaintextklassen för att ta bort standardformatet för formulärfältet och bevara rätt marginal och utfyllnad.
Range Inputs
Ställ in horisontellt rullningsbara intervallingångar med .form-control-range.
Kryssrutor och radioapparater
Standardkryssrutor och radioapparater förbättras med hjälp av .form-checken enda klass för båda inmatningstyperna som förbättrar layouten och beteendet hos deras HTML-element . Kryssrutorna är för att välja ett eller flera alternativ i en lista, medan radioapparater är för att välja ett alternativ bland många.
Inaktiverade kryssrutor och radioapparater stöds. Attributet disabledkommer att tillämpa en ljusare färg för att indikera ingångens tillstånd.
Kryssrutor och alternativknappar stöder HTML-baserad formulärvalidering och ger kortfattade, tillgängliga etiketter. Som sådana är våra <input>s och <label>s syskonelement i motsats till ett <input>inom en <label>. Detta är något mer utförligt eftersom du måste specificera idoch forattribut för att relatera <input>och <label>.
Standard (staplad)
Som standard kommer valfritt antal kryssrutor och radioapparater som är direkta syskon att vara vertikalt staplade och på lämpligt avstånd med .form-check.
I kö
Gruppera kryssrutor eller radioapparater på samma horisontella rad genom att lägga .form-check-inlinetill någon .form-check.
Utan etiketter
Lägg .position-statictill ingångar inom .form-checksom inte har någon etiketttext. Kom ihåg att fortfarande tillhandahålla någon form av märkning för hjälpmedel (till exempel genom att använda aria-label).
Layout
Eftersom Bootstrap gäller display: blockoch width: 100%för nästan alla våra formulärkontroller, staplas formulär som standard vertikalt. Ytterligare klasser kan användas för att variera denna layout på per-form-basis.
Bilda grupper
Klassen .form-groupär det enklaste sättet att lägga till lite struktur till formulär. Den tillhandahåller en flexibel klass som uppmuntrar korrekt gruppering av etiketter, kontroller, valfri hjälptext och formulärvalideringsmeddelanden. Som standard gäller det bara margin-bottom, men det plockar upp ytterligare stilar .form-inlineefter behov. Använd den med <fieldset>s, <div>s eller nästan vilket annat element som helst.
Form rutnät
Mer komplexa former kan byggas med hjälp av våra rutnätsklasser. Använd dessa för formulärlayouter som kräver flera kolumner, varierade bredder och ytterligare justeringsalternativ.
Form rad
Du kan också byta .rowmot .form-row, en variant av vår standardrasterrad som åsidosätter standardkolumnrännorna för tätare och mer kompakta layouter.
Mer komplexa layouter kan också skapas med rutsystemet.
Horisontell form
Skapa horisontella formulär med rutnätet genom att lägga till .rowklassen i formulärgrupper och använda .col-*-*klasserna för att ange bredden på dina etiketter och kontroller. Se till att lägga .col-form-labeltill dina <label>s också så att de är vertikalt centrerade med tillhörande formulärkontroller.
Ibland behöver du kanske använda marginal- eller utfyllnadsverktyg för att skapa den perfekta justeringen du behöver. Till exempel har vi tagit bort padding-topetiketten på våra staplade radioingångar för att bättre anpassa textens baslinje.
Horisontell formetikettstorlek
Se till att använda .col-form-label-smeller .col-form-label-lgtill dina <label>s eller <legend>s för att korrekt följa storleken på .form-control-lgoch .form-control-sm.
Kolumnstorlek
Som framgår av de föregående exemplen låter vårt rutsystem dig placera valfritt antal .cols inom a .roweller .form-row. De delar den tillgängliga bredden lika mellan sig. Du kan också välja en delmängd av dina kolumner för att ta upp mer eller mindre utrymme, medan de återstående .cols delar lika upp resten, med specifika kolumnklasser som .col-7.
Automatisk dimensionering
Exemplet nedan använder ett flexbox-verktyg för att vertikalt centrera innehållet och ändringar .colså .col-autoatt dina kolumner bara tar upp så mycket utrymme som behövs. Uttryckt på ett annat sätt, storleken på kolumnen själv baserat på innehållet.
Du kan sedan remixa det igen med storleksspecifika kolumnklasser.
Använd .form-inlineklassen för att visa en serie etiketter, formulärkontroller och knappar på en enda horisontell rad. Formulärkontroller i infogade formulär skiljer sig något från standardtillstånden.
Kontroller är display: flex, kollapsar alla HTML-blankutrymmen och låter dig tillhandahålla anpassningskontroll med avstånd och flexbox- verktyg.
Kontroller och inmatningsgrupper tar emot width: autoför att åsidosätta Bootstrap-standarden width: 100%.
Kontroller visas bara inline i vyportar som är minst 576px breda för att ta hänsyn till smala visningsportar på mobila enheter.
Du kan behöva adressera bredden och justeringen av individuella formulärkontroller manuellt med avståndsverktyg (som visas nedan). Slutligen, se till att alltid inkludera en <label>med varje formulärkontroll, även om du behöver dölja den för besökare som inte är skärmläsare med .sr-only.
Anpassade formulärkontroller och val stöds också.
Alternativ till dolda etiketter
Hjälpmedel som skärmläsare kommer att få problem med dina formulär om du inte inkluderar en etikett för varje inmatning. För dessa infogade formulär kan du dölja etiketterna med hjälp av .sr-onlyklassen. Det finns ytterligare alternativa metoder för att tillhandahålla en märkning för hjälpmedel, som aria-labelattributet eller aria-labelledby. titleOm ingen av dessa finns kan hjälpmedel använda placeholderattributet, om det finns, men observera att användning av det placeholdersom ersättning för andra märkningsmetoder inte rekommenderas.
Hjälp text
Hjälptext på blocknivå i formulär kan skapas med .form-text(tidigare känt som .help-blocki v3). Inline hjälptext kan implementeras flexibelt med hjälp av alla inline HTML-element och verktygsklasser som .text-muted.
Associera hjälptext med formulärkontroller
Hjälptext bör uttryckligen associeras med formulärkontrollen den relaterar till med aria-describedbyattributet. Detta säkerställer att hjälpmedel – som skärmläsare – kommer att meddela denna hjälptext när användaren fokuserar eller går in i kontrollen.
Hjälptexten nedanför ingångar kan formateras med .form-text. Denna klass inkluderar display: blockoch lägger till en viss toppmarginal för enkelt avstånd från ingångarna ovan.
Ditt lösenord måste vara 8-20 tecken långt, innehålla bokstäver och siffror och får inte innehålla mellanslag, specialtecken eller emoji.
Inline-text kan använda vilket typiskt inline HTML-element som helst (vare sig det är en <small>, <span>, eller något annat) med inget annat än en verktygsklass.
Inaktiverade formulär
Lägg till det disabledbooleska attributet på en ingång för att förhindra användarinteraktioner och få den att se lättare ut.
Lägg till disabledattributet till a <fieldset>för att inaktivera alla kontroller inom.
Varning med ankare
Som standard kommer webbläsare att behandla alla inbyggda formulärkontroller ( <input>, <select>och <button>element) i en <fieldset disabled>som inaktiverade, vilket förhindrar interaktion med både tangentbord och mus på dem. Men om ditt formulär också innehåller <a ... class="btn btn-*">element kommer dessa bara att få stilen pointer-events: none. Som nämnts i avsnittet om inaktiverat tillstånd för knappar (och specifikt i underavsnittet för ankarelement), är denna CSS-egenskap ännu inte standardiserad och stöds inte fullt ut i Internet Explorer 10, och kommer inte att hindra tangentbordsanvändare från att vara kunna fokusera eller aktivera dessa länkar. Så för att vara säker, använd anpassad JavaScript för att inaktivera sådana länkar.
Kompatibilitet över webbläsare
Även om Bootstrap kommer att tillämpa dessa stilar i alla webbläsare, stöder Internet Explorer 11 och lägre inte helt disabledattributet på en <fieldset>. Använd anpassad JavaScript för att inaktivera fältuppsättningen i dessa webbläsare.
Godkännande
Ge dina användare värdefull feedback till dina användare med HTML5-formulärvalidering – tillgängligt i alla våra webbläsare som stöds . Välj från webbläsarens standardvalideringsfeedback, eller implementera anpassade meddelanden med våra inbyggda klasser och start-JavaScript.
Vi rekommenderar för närvarande att du använder anpassade valideringsstilar, eftersom inbyggda webbläsares standardvalideringsmeddelanden inte konsekvent exponeras för hjälpmedelsteknik i alla webbläsare (främst Chrome på datorer och mobiler).
Hur det fungerar
Så här fungerar formulärvalidering med Bootstrap:
HTML-formulärvalidering tillämpas via CSS:s två pseudoklasser, :invalidoch :valid. Det gäller <input>, <select>, och <textarea>element.
Bootstrap omfångar :invalidoch :validstilar till överordnad .was-validatedklass, vanligtvis tillämpad på <form>. Annars visas alla obligatoriska fält utan värde som ogiltiga vid sidladdning. På så sätt kan du välja när du vill aktivera dem (vanligtvis efter att formuläret har skickats in).
För att återställa utseendet på formuläret (till exempel i fallet med dynamiska formulärinlämningar med AJAX), ta bort .was-validatedklassen från klassen <form>igen efter inlämning.
Som en reserv, .is-invalidoch .is-validklasser kan användas istället för pseudoklasserna för validering på serversidan . De kräver ingen .was-validatedföräldraklass.
På grund av begränsningar i hur CSS fungerar kan vi (för närvarande) inte tillämpa stilar på en <label>som kommer före en formulärkontroll i DOM utan hjälp av anpassad JavaScript.
Alla moderna webbläsare stöder constraint validation API , en serie JavaScript-metoder för att validera formulärkontroller.
Feedbackmeddelanden kan använda webbläsarens standardvärden (olika för varje webbläsare och ostylbar via CSS) eller våra anpassade feedbackstilar med ytterligare HTML och CSS.
Du kan tillhandahålla anpassade giltighetsmeddelanden setCustomValidityi JavaScript.
Med det i åtanke, överväg följande demos för våra anpassade formulärvalideringsstilar, valfria serversideklasser och webbläsarstandarder.
Anpassade stilar
För anpassade Bootstrap-formulärvalideringsmeddelanden måste du lägga till det novalidatebooleska attributet till din <form>. Detta inaktiverar webbläsarens standardverktygstips för feedback, men ger fortfarande åtkomst till API:erna för formulärvalidering i JavaScript. Försök att skicka in formuläret nedan; vår JavaScript kommer att fånga upp knappen Skicka och vidarebefordra feedback till dig. När du försöker skicka in ser du :invalidstilarna och :validsom tillämpas på dina formulärkontroller.
Anpassade feedbackstilar tillämpar anpassade färger, ramar, fokusstilar och bakgrundsikoner för att bättre kommunicera feedback. Bakgrundsikoner för <select>s är endast tillgängliga med .custom-selectoch inte .form-control.
Webbläsarens standardinställningar
Inte intresserad av anpassade valideringsfeedbackmeddelanden eller att skriva JavaScript för att ändra formulärbeteenden? Allt bra, du kan använda webbläsarens standardinställningar. Prova att skicka in formuläret nedan. Beroende på din webbläsare och operativsystem kommer du att se en lite annorlunda typ av feedback.
Även om dessa feedbackstilar inte kan utformas med CSS, kan du fortfarande anpassa feedbacktexten genom JavaScript.
Serversidan
Vi rekommenderar att du använder validering på klientsidan, men om du behöver validering på serversidan kan du ange ogiltiga och giltiga formulärfält med .is-invalidoch .is-valid. Observera att det .invalid-feedbackockså stöds med dessa klasser.
Element som stöds
Valideringsstilar är tillgängliga för följande formulärkontroller och komponenter:
<input>s och <textarea>s med .form-control(inklusive upp till en .form-controli inmatningsgrupper)
<select>s med .form-controleller.custom-select
.form-checks
.custom-checkboxs och .custom-radios
.custom-file
Verktygstips
Om din formulärlayout tillåter det kan du byta ut .{valid|invalid}-feedbackklasserna mot .{valid|invalid}-tooltipklasser för att visa valideringsfeedback i ett formaterat verktygstips. Se till att ha en förälder med position: relativepå den för positionering av verktygstips. I exemplet nedan har våra kolumnklasser detta redan, men ditt projekt kan kräva en alternativ inställning.
Anpassa
Valideringsstatus kan anpassas via Sass med $form-validation-stateskartan. Denna Sass-karta ligger i vår _variables.scssfil och slingras över för att generera standard- valid/ invalidvalideringstillstånden. Inkluderat är en kapslad karta för att anpassa varje delstats färg och ikon. Även om inga andra tillstånd stöds av webbläsare, kan de som använder anpassade stilar enkelt lägga till mer komplex formulärfeedback.
Observera att vi inte rekommenderar att du anpassar dessa värden utan att även ändra form-validation-statemixin.
Anpassade formulär
För ännu mer anpassning och enhetlighet över webbläsare, använd våra helt anpassade formulärelement för att ersätta webbläsarens standardinställningar. De är byggda ovanpå semantisk och tillgänglig markering, så de är solida ersättare för alla standardformulärkontroller.
Kryssrutor och radioapparater
Varje kryssruta och radio <input>och <label>parning är insvept i en <div>för att skapa vår anpassade kontroll. Strukturellt sett är detta samma tillvägagångssätt som vår standard .form-check.
Vi använder syskonväljaren ( ~) för alla våra <input>stater – som :checked– för att utforma vår anpassade formulärindikator korrekt. När det kombineras med .custom-control-labelklassen kan vi även formatera texten för varje objekt baserat på <input>tillståndet 's.
Vi döljer standarden <input>med opacityoch använder för .custom-control-labelatt bygga en ny anpassad formulärindikator i dess ställe med ::beforeoch ::after. Tyvärr kan vi inte bygga en anpassad av bara <input>eftersom CSS contentinte fungerar på det elementet.
I de markerade tillstånden använder vi base64 inbäddade SVG-ikoner från Open Iconic . Detta ger oss den bästa kontrollen för styling och positionering mellan webbläsare och enheter.
Kryssrutor
Anpassade kryssrutor kan också använda :indeterminatepseudoklassen när den ställs in manuellt via JavaScript (det finns inget tillgängligt HTML-attribut för att ange det).
Om du använder jQuery borde något i stil med detta räcka:
Radioapparater
I kö
Inaktiverad
Anpassade kryssrutor och radioapparater kan också inaktiveras. Lägg till det disabledbooleska attributet till så <input>kommer den anpassade indikatorn och etikettbeskrivningen att formateras automatiskt.
Växlar
En switch har markeringen av en anpassad kryssruta men använder .custom-switchklassen för att återge en vippbrytare. Omkopplare stöder också disabledattributet.
Välj meny
Anpassade <select>menyer behöver bara en anpassad klass .custom-selectför att utlösa de anpassade stilarna. Anpassade stilar är begränsade till det <select>ursprungliga utseendet och kan inte ändras på <option>grund av webbläsarbegränsningar.
Du kan också välja mellan små och stora anpassade markeringar för att matcha våra textinmatningar i liknande storlek.
Attributet multiplestöds också:
Som är sizeattributet:
Räckvidd
Skapa anpassade <input type="range">kontroller med .custom-range. Spåret (bakgrunden) och tummen (värdet) är båda utformade så att de ser likadana ut i alla webbläsare. Eftersom endast IE och Firefox stödjer att "fylla" deras spår från vänster eller höger om tummen som ett sätt att visuellt indikera framsteg, stöder vi det för närvarande inte.
Områdesingångar har implicita värden för minrespektive max— 0och 100. Du kan ange nya värden för de som använder attributen minoch .max
Som standard "snap" intervallinmatningar till heltalsvärden. För att ändra detta kan du ange ett stepvärde. I exemplet nedan fördubblar vi antalet steg genom att använda step="0.5".
Filhanterare
Det rekommenderade pluginet för att animera anpassad filinmatning: bs-custom-file-input , det är vad vi använder för närvarande här i våra dokument.
Filinmatningen är den mest knotiga av gänget och kräver ytterligare JavaScript om du vill koppla ihop dem med funktionell Välj fil... och vald filnamnstext.
Vi döljer standardfilen <input>via opacityoch formaterar istället <label>. Knappen genereras och placeras med ::after. Slutligen deklarerar vi ett widthoch heightpå <input>för korrekt avstånd för omgivande innehåll.
Översätta eller anpassa strängarna med SCSS
Pseudoklassen används för att möjliggöra översättning av "Bläddra"-texten till andra språk :lang(). Åsidosätt eller lägg till poster i $custom-file-textSass-variabeln med relevant språktagg och lokaliserade strängar. De engelska strängarna kan anpassas på samma sätt. Så här kan man till exempel lägga till en spansk översättning (spanskas språkkod är es):
Här är lang(es)i aktion på den anpassade filinmatningen för en spansk översättning:
Du måste ställa in språket för ditt dokument (eller underträd därav) korrekt för att rätt text ska visas. Detta kan göras med hjälp av langattributet på <html>elementet eller Content-LanguageHTTP-huvudet , bland andra metoder.
Översätta eller anpassa strängarna med HTML
Bootstrap tillhandahåller också ett sätt att översätta "Bläddra"-texten i HTML med data-browseattributet som kan läggas till den anpassade inmatningsetiketten (exempel på holländska):