Eksempler og retningslinjer for bruk for skjemakontrollstiler, layoutalternativer og egendefinerte komponenter for å lage et bredt utvalg av skjemaer.
Oversikt
Bootstraps skjemakontroller utvider seg til våre Rebooted-skjemastiler med klasser. Bruk disse klassene til å velge de tilpassede skjermene deres for en mer konsistent gjengivelse på tvers av nettlesere og enheter.
Sørg for å bruke et passende typeattributt på alle inndata (f.eks. emailfor e-postadresse eller numberfor numerisk informasjon) for å dra nytte av nyere inndatakontroller som e-postbekreftelse, nummervalg og mer.
Her er et raskt eksempel for å demonstrere Bootstraps formstiler. Fortsett å lese for dokumentasjon om obligatoriske klasser, skjemaoppsett og mer.
Skjemakontroller
Tekstformkontroller – som <input>s, <select>s og <textarea>s – er stilt med .form-controlklassen. Inkludert er stiler for generelt utseende, fokustilstand, størrelse og mer.
For filinndata, bytt ut .form-controlfor .form-control-file.
Dimensjonering
Angi høyder ved å bruke klasser som .form-control-lgog .form-control-sm.
Skrivebeskyttet
Legg til det readonlyboolske attributtet på en inngang for å forhindre endring av inngangens verdi. Skrivebeskyttede innganger virker lettere (akkurat som deaktiverte innganger), men beholder standardmarkøren.
Skrivebeskyttet ren tekst
Hvis du vil ha <input readonly>elementer i skjemaet stilt som ren tekst, bruk .form-control-plaintextklassen til å fjerne standard skjemafeltstil og bevare riktig marg og utfylling.
Områdeinnganger
Angi horisontalt rullbare områdeinnganger ved å bruke .form-control-range.
Avmerkingsbokser og radioer
Standard avmerkingsbokser og radioer er forbedret ved hjelp av .form-checken enkelt klasse for begge inndatatyper som forbedrer layouten og oppførselen til HTML-elementene deres . Avmerkingsbokser er for å velge ett eller flere alternativer i en liste, mens radioer er for å velge ett alternativ fra mange.
Deaktiverte avmerkingsbokser og radioer støttes, men for å gi en not-allowedmarkør på overordnet peker <label>, må du legge til disabledattributtet til .form-check-input. Deaktivert-attributtet vil bruke en lysere farge for å indikere inngangens tilstand.
Avmerkingsbokser og radioer som brukes er bygget for å støtte HTML-basert skjemavalidering og gi konsise, tilgjengelige etiketter. Som sådan er våre <input>s og <label>s søskenelementer i motsetning til en <input>innenfor en <label>. Dette er litt mer detaljert ettersom du må spesifisere idog forattributter for å relatere <input>og <label>.
Standard (stablet)
Som standard vil et hvilket som helst antall avmerkingsbokser og radioer som er umiddelbare søsken, stables vertikalt og hensiktsmessig fordelt med .form-check.
På linje
Grupper avmerkingsbokser eller radioer på samme horisontale rad ved å legge .form-check-inlinetil en .form-check.
Uten merkelapper
Legg .position-statictil innganger innenfor .form-checksom ikke har noen etiketttekst. Husk å fortsatt gi en form for etikett for hjelpeteknologier (for eksempel ved å bruke aria-label).
Oppsett
Siden Bootstrap gjelder display: blockog width: 100%for nesten alle skjemakontrollene våre, vil skjemaer som standard stables vertikalt. Ytterligere klasser kan brukes til å variere dette oppsettet på en per-form basis.
Form grupper
Klassen .form-grouper den enkleste måten å legge til litt struktur i skjemaer. Den gir en fleksibel klasse som oppmuntrer til riktig gruppering av etiketter, kontroller, valgfri hjelpetekst og skjemavalideringsmeldinger. Som standard gjelder det bare margin-bottom, men det plukker opp flere stiler .form-inlineetter behov. Bruk den med <fieldset>s, <div>s eller nesten hvilket som helst annet element.
Form rutenett
Mer komplekse skjemaer kan bygges ved hjelp av våre rutenettklasser. Bruk disse for skjemaoppsett som krever flere kolonner, varierte bredder og ekstra justeringsalternativer.
Form rad
Du kan også bytte .rowmot .form-row, en variant av vår standard rutenettrad som overstyrer standard søylerenner for strammere og mer kompakte oppsett.
Mer komplekse oppsett kan også lages med rutenettsystemet.
Horisontal form
Lag horisontale skjemaer med rutenettet ved å legge .rowklassen til formgrupper og bruke .col-*-*klassene til å spesifisere bredden på etikettene og kontrollene dine. Sørg for å legge .col-form-labeltil dine <label>s også slik at de er vertikalt sentrert med tilhørende skjemakontroller.
Noen ganger må du kanskje bruke margin- eller polstringsverktøy for å lage den perfekte justeringen du trenger. For eksempel har vi fjernet padding-topetiketten på våre stablede radioinnganger for å justere tekstens grunnlinje bedre.
Horisontal formetikettstørrelse
Pass på å bruke .col-form-label-smeller .col-form-label-lgtil dine <label>s eller <legend>s for å følge størrelsen på .form-control-lgog .form-control-sm.
Kolonnestørrelse
Som vist i de foregående eksemplene, lar vårt rutenettsystem deg plassere et hvilket som helst antall .cols innenfor en .roweller .form-row. De deler den tilgjengelige bredden likt mellom seg. Du kan også velge et undersett av kolonnene dine for å ta opp mer eller mindre plass, mens de resterende .coldelene deler resten likt, med spesifikke kolonneklasser som .col-7.
Automatisk størrelse
Eksemplet nedenfor bruker et flexbox-verktøy for å vertikalt sentrere innholdet og endringer .colslik .col-autoat kolonnene dine bare tar så mye plass som nødvendig. Sagt på en annen måte, kolonnen dimensjonerer seg selv basert på innholdet.
Du kan deretter remikse det igjen med størrelsesspesifikke kolonneklasser.
Bruk .form-inlineklassen til å vise en rekke etiketter, skjemakontroller og knapper på en enkelt horisontal rad. Skjemakontroller i innebygde skjemaer varierer litt fra standardtilstandene.
Kontroller er display: flex, kollapser alle HTML-mellomrom og lar deg gi justeringskontroll med mellomrom og flexbox- verktøy.
Kontroller og inngangsgrupper mottar width: autofor å overstyre Bootstrap-standarden width: 100%.
Kontroller vises bare innebygd i visningsporter som er minst 576 piksler brede for å ta hensyn til smale visningsporter på mobile enheter.
Du må kanskje adressere bredden og justeringen av individuelle skjemakontroller manuelt med avstandsverktøy (som vist nedenfor). Til slutt, sørg for å alltid inkludere en <label>med hver skjemakontroll, selv om du trenger å skjule den for besøkende som ikke er skjermlesere med .sr-only.
Egendefinerte skjemakontroller og valg støttes også.
Alternativer til skjulte etiketter
Hjelpeteknologier som skjermlesere vil få problemer med skjemaene dine hvis du ikke inkluderer en etikett for hver inndata. For disse innebygde skjemaene kan du skjule etikettene ved å bruke .sr-onlyklassen. Det finnes flere alternative metoder for å gi en etikett for hjelpeteknologier, for eksempel aria-label, aria-labelledbyeller titleattributtet. Hvis ingen av disse er til stede, kan hjelpeteknologier ty til å bruke placeholderattributtet, hvis det finnes, men vær oppmerksom på at bruk av placeholdersom erstatning for andre merkingsmetoder ikke anbefales.
Hjelpetekst
Hjelpetekst på blokknivå i skjemaer kan opprettes ved å bruke .form-text(tidligere kjent som .help-blocki v3). Innebygd hjelpetekst kan implementeres fleksibelt ved å bruke alle innebygde HTML-elementer og verktøyklasser som .text-muted.
Knytte hjelpetekst til skjemakontroller
Hjelpeteksten skal eksplisitt assosieres med skjemakontrollen den er knyttet til ved bruk av aria-describedbyattributtet. Dette vil sikre at hjelpeteknologier – for eksempel skjermlesere – vil kunngjøre denne hjelpeteksten når brukeren fokuserer eller går inn i kontrollen.
Hjelpeteksten under innganger kan styles med .form-text. Denne klassen inkluderer display: blockog legger til en toppmargin for enkel avstand fra inngangene ovenfor.
Passordet ditt må være 8-20 tegn langt, inneholde bokstaver og tall, og må ikke inneholde mellomrom, spesialtegn eller emoji.
Innebygd tekst kan bruke et hvilket som helst typisk innebygd HTML-element (det være seg en <small>, <span>, eller noe annet) med noe mer enn en verktøyklasse.
Deaktiverte skjemaer
Legg til det disabledboolske attributtet på en inngang for å forhindre brukerinteraksjoner og få den til å virke lettere.
Legg til disabledattributtet til a <fieldset>for å deaktivere alle kontrollene innenfor.
Advarsel med ankere
Som standard vil nettlesere behandle alle innfødte skjemakontroller ( <input>, <select>og <button>elementer) i en <fieldset disabled>som deaktivert, og forhindrer både tastatur- og musinteraksjoner på dem. Men hvis skjemaet ditt også inneholder <a ... class="btn btn-*">elementer, vil disse kun få stilen pointer-events: none. Som nevnt i delen om deaktivert tilstand for knapper (og spesifikt i underdelen for ankerelementer), er denne CSS-egenskapen ennå ikke standardisert og støttes ikke fullt ut i Internet Explorer 10, og vil ikke hindre tastaturbrukere fra å bli i stand til å fokusere eller aktivere disse koblingene. Så for å være sikker, bruk tilpasset JavaScript for å deaktivere slike koblinger.
Kompatibilitet på tvers av nettlesere
disabledMens Bootstrap vil bruke disse stilene i alle nettlesere, støtter ikke Internet Explorer 11 og eldre attributtet fullt ut på en <fieldset>. Bruk tilpasset JavaScript for å deaktivere feltsettet i disse nettleserne.
Validering
Gi verdifull tilbakemelding til brukerne dine med HTML5-skjemavalidering – tilgjengelig i alle våre støttede nettlesere . Velg fra nettleserens standard valideringstilbakemelding, eller implementer tilpassede meldinger med våre innebygde klasser og start-JavaScript.
Vi anbefaler for øyeblikket å bruke egendefinerte valideringsstiler, ettersom valideringsmeldinger for innebygde nettlesere ikke konsekvent eksponeres for hjelpeteknologier i alle nettlesere (spesielt Chrome på datamaskiner og mobiler).
Hvordan det fungerer
Slik fungerer skjemavalidering med Bootstrap:
HTML-skjemavalidering brukes via CSS sine to pseudo-klasser, :invalidog :valid. Det gjelder <input>, <select>, og <textarea>elementer.
Bootstrap dekker stilene :invalidog :validtil overordnet .was-validatedklasse, vanligvis brukt på <form>. Ellers vises ethvert obligatorisk felt uten verdi som ugyldig ved sideinnlasting. På denne måten kan du velge når du vil aktivere dem (vanligvis etter at skjemainnsending er forsøkt).
For å tilbakestille utseendet til skjemaet (for eksempel ved dynamiske skjemainnsendinger med AJAX), fjern .was-validatedklassen fra <form>igjen etter innsending.
Som en reserve, .is-invalidog .is-validklasser kan brukes i stedet for pseudo-klassene for serversidevalidering . De krever ikke en .was-validatedforeldreklasse.
På grunn av begrensninger i hvordan CSS fungerer, kan vi (for øyeblikket) ikke bruke stiler på en <label>som kommer før en skjemakontroll i DOM uten hjelp av tilpasset JavaScript.
Alle moderne nettlesere støtter constraint validation API , en serie JavaScript-metoder for å validere skjemakontroller.
Tilbakemeldingsmeldinger kan bruke nettleserens standardinnstillinger (forskjellig for hver nettleser, og ustilbar via CSS) eller våre tilpassede tilbakemeldingsstiler med ekstra HTML og CSS.
Du kan gi tilpassede gyldighetsmeldinger setCustomValidityi JavaScript.
Med det i tankene bør du vurdere følgende demoer for våre egendefinerte skjemavalideringsstiler, valgfrie serversideklasser og nettleserstandarder.
Egendefinerte stiler
For egendefinerte Bootstrap-skjemavalideringsmeldinger, må du legge til det novalidateboolske attributtet til <form>. Dette deaktiverer nettleserens standard verktøytips for tilbakemelding, men gir fortsatt tilgang til API-ene for skjemavalidering i JavaScript. Prøv å sende inn skjemaet nedenfor; JavaScript vil avskjære send-knappen og sende tilbakemelding til deg.
Når du prøver å sende inn, ser du :invalidstilene og :validbrukt på skjemakontrollene dine.
Nettleserstandarder
Ikke interessert i tilpassede tilbakemeldingsmeldinger for validering eller å skrive JavaScript for å endre skjemaatferd? Alt bra, du kan bruke nettleserens standardinnstillinger. Prøv å sende inn skjemaet nedenfor. Avhengig av nettleseren og operativsystemet din, vil du se en litt annen tilbakemeldingsstil.
Selv om disse tilbakemeldingsstilene ikke kan styles med CSS, kan du fortsatt tilpasse tilbakemeldingsteksten gjennom JavaScript.
Server side
Vi anbefaler å bruke klientsidevalidering, men i tilfelle du trenger serverside, kan du angi ugyldige og gyldige skjemafelt med .is-invalidog .is-valid. Merk at .invalid-feedbackdet også støttes med disse klassene.
Støttede elementer
Eksempelskjemaene våre viser opprinnelige tekster <input>ovenfor, men skjemavalideringsstiler er også tilgjengelige for våre egendefinerte skjemakontroller.
Verktøytips
Hvis skjemaoppsettet tillater det, kan du bytte .{valid|invalid}-feedbackklassene med .{valid|invalid}-tooltipklasser for å vise valideringstilbakemeldinger i et stilisert verktøytips. Sørg for å ha en forelder med position: relativepå den for plassering av verktøytips. I eksemplet nedenfor har kolonneklassene våre dette allerede, men prosjektet ditt kan kreve et alternativt oppsett.
Egendefinerte skjemaer
For enda mer tilpasning og konsistens på tvers av nettlesere, bruk våre fullstendig tilpassede skjemaelementer for å erstatte nettleserstandardene. De er bygget på toppen av semantisk og tilgjengelig markering, så de er solide erstatninger for enhver standard skjemakontroll.
Avmerkingsbokser og radioer
Hver avmerkingsboks og radio er pakket inn i en <div>med et søsken <span>for å lage vår egendefinerte kontroll og en <label>for den medfølgende teksten. Strukturelt sett er dette den samme tilnærmingen som vår standard .form-check.
Vi bruker søskenvelgeren ( ~) for alle <input>delstatene våre – for eksempel :checked– for å style vår egendefinerte skjemaindikator. Når det kombineres med .custom-control-labelklassen, kan vi også style teksten for hvert element basert på <input>'s-tilstanden.
Vi skjuler standarden <input>med opacityog bruker til .custom-control-labelå bygge en ny tilpasset skjemaindikator i stedet for ::beforeog ::after. Dessverre kan vi ikke bygge en tilpasset en fra bare <input>fordi CSS- contenter ikke fungerer på det elementet.
I de avmerkede tilstandene bruker vi base64 innebygde SVG-ikoner fra Open Iconic . Dette gir oss den beste kontrollen for styling og plassering på tvers av nettlesere og enheter.
Avmerkingsbokser
Egendefinerte avmerkingsbokser kan også bruke :indeterminatepseudoklassen når den er satt manuelt via JavaScript (det er ingen tilgjengelig HTML-attributt for å spesifisere den).
Hvis du bruker jQuery, bør noe slikt være tilstrekkelig:
Radioer
På linje
Funksjonshemmet
Egendefinerte avmerkingsbokser og radioer kan også deaktiveres. Legg til det disabledboolske attributtet til <input>og den tilpassede indikatoren og etikettbeskrivelsen vil bli stilt automatisk.
Velg meny
Egendefinerte <select>menyer trenger bare en egendefinert klasse .custom-selectfor å utløse de egendefinerte stilene. Egendefinerte stiler er begrenset til det <select>opprinnelige utseendet og kan ikke endres på <option>grunn av nettleserbegrensninger.
Du kan også velge mellom små og store tilpassede utvalg for å matche våre tekstinndata i samme størrelse.
multipleAttributtet støttes også :
Som er sizeattributten:
Område
Lag egendefinerte <input type="range">kontroller med .custom-range. Sporet (bakgrunnen) og tommelen (verdien) er begge stilt slik at de ser likt ut på tvers av nettlesere. Siden bare IE og Firefox støtter å "fylle" sporet deres fra venstre eller høyre for tommelen som et middel til å visuelt indikere fremgang, støtter vi det for øyeblikket ikke.
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 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
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:
Du må stille inn språket til dokumentet (eller undertreet til det) riktig for at riktig tekst skal vises. Dette kan gjøres ved å bruke langattributtet på <html>elementet eller Content-LanguageHTTP-headeren , blant andre metoder.