Formulieren

Voorbeelden en gebruiksrichtlijnen voor besturingsstijlen voor formulieren, lay-outopties en aangepaste componenten voor het maken van een breed scala aan formulieren.

Overzicht

De formulierbesturingen van Bootstrap breiden onze opnieuw opgestarte formulierstijlen uit met klassen. Gebruik deze klassen om u aan te melden voor hun aangepaste weergaven voor een meer consistente weergave tussen browsers en apparaten.

Zorg ervoor dat u een geschikt type -attribuut gebruikt voor alle invoer (bijv. , email voor e-mailadres of number voor numerieke informatie) om te profiteren van nieuwere invoeropties zoals e-mailverificatie, nummerkeuze en meer.

Hier is een snel voorbeeld om de vormstijlen van Bootstrap te demonstreren. Blijf lezen voor documentatie over vereiste klassen, formulierindeling en meer.

Formulierbesturingselementen

Bekijk onze aangepaste formulieren om <select> s.

Voor bestandsinvoer, vervang .form-control voor .form-control-file.

Grootte

Stel hoogtes in met behulp van klassen als .form-control-lg en .form-control-sm.

Alleen-lezen

Voeg de readonly boolean attribuut op een invoer om wijziging van de waarde van de invoer te voorkomen. Alleen-lezen invoer lijkt lichter (net als uitgeschakelde invoer), maar behoudt de standaardcursor.

Alleen-lezen platte tekst

Als u <input readonly> -elementen in uw formulier wilt opmaken als platte tekst, gebruikt u de .form-control-plaintext class om de standaard opmaak van formuliervelden te verwijderen en de juiste marge en opvulling te behouden.

Selectievakjes en radios

Standaard selectievakjes en radios zijn verbeterd met behulp van .form-check, een enkele klasse voor beide invoertypes die de lay-out en het gedrag van hun HTML-elementen verbetert. Selectievakjes zijn voor het selecteren van een of meer opties in een lijst, terwijl radios zijn voor het selecteren van een van de vele opties.

Uitgeschakelde selectievakjes en radios worden ondersteund, maar om een not-allowed cursor op zweeftekst van de bovenliggende <label>, u moet het disabled -kenmerk toevoegen aan het .form-check-input. Het uitgeschakelde kenmerk past een lichtere kleur toe om de status van de invoer aan te geven.

Het gebruik van selectievakjes en radios is gebouwd om HTML-gebaseerde formuliervalidatie te ondersteunen en biedt beknopte, toegankelijke labels. Als zodanig zijn onze <input> s en <label> s elementen op hetzelfde niveau, in tegenstelling tot een <input> binnen een <label>. Dit is iets meer uitgebreid omdat je id en for attributen moet specificeren om de <input> en <label>.

Standaard (gestapeld)

Standaard wordt elk aantal selectievakjes en radios die direct op hetzelfde niveau staan verticaal gestapeld en op de juiste afstand met .form-check.

Standaard selectievakje
Uitgeschakeld selectievakje

Standaard radio
Tweede standaard radio
Uitgeschakelde radio

Inline

Groepeer selectievakjes of radios op dezelfde horizontale rij door .form-check-inline toe te voegen aan een .form-check.

1
2
3 (uitgeschakeld)

1
2
3 (uitgeschakeld)

Zonder labels

Voeg .position-static toe aan invoer binnen .form-check die geen labeltekst hebben. Vergeet niet om nog steeds een soort label voor ondersteunende technologieën te verstrekken (gebruik bijvoorbeeld aria-label).

Layout

Aangezien Bootstrap display: block en width: 100% toepast op bijna al onze formulierelementen , formulieren worden standaard verticaal gestapeld. Er kunnen aanvullende klassen worden gebruikt om deze lay-out per formulier te variëren.

Formuliergroepen

De .form-group -klasse is de gemakkelijkste manier om wat structuur aan formulieren toe te voegen. Het biedt een flexibele klasse die de juiste groepering van labels, bedieningselementen, optionele helptekst en formuliervalidatieberichten aanmoedigt. Standaard is het alleen van toepassing margin-bottom, maar het pikt extra stijlen op in .form-inline als dat nodig is. Gebruik het met <fieldset> s, <div> s of bijna elk ander element.

Formulierraster

Meer complexe formulieren kunnen worden gebouwd met behulp van onze rasterklassen. Gebruik deze voor formulierlay-outs waarvoor meerdere kolommen, verschillende breedtes en extra uitlijningsopties nodig zijn.

Formulierrij

U kunt ook .row ruilen voor .form-row, een variatie op onze standaard rasterrij die de standaard kolomgoten overschrijft voor strakkere en compactere lay-outs.

Meer complexe lay-outs kunnen ook worden gemaakt met het rastersysteem.

Horizontale vorm

Maak horizontale formulieren met het raster door de klasse .row toe te voegen om groepen te vormen en de .col-*-* klassen om de breedte van uw labels en besturingselementen te specificeren. Zorg ervoor dat u .col-form-label toevoegt aan uw <label> s, zodat ze verticaal gecentreerd zijn met de bijbehorende besturingselementen voor formulieren.

Soms moet je misschien marge- of opvulhulpprogrammas gebruiken om die perfecte uitlijning te creëren die je nodig hebt. We hebben bijvoorbeeld de padding-top op ons label met gestapelde radio-ingangen verwijderd om de tekstbasislijn beter uit te lijnen.

Horizontaal formulierlabel grootte

Kolomgrootte

Zoals getoond in de vorige voorbeelden, kunt u met ons rastersysteem een willekeurig aantal .col s binnen een .row of .form-row. Ze verdelen de beschikbare breedte gelijkmatig over de twee. U kunt ook een subset van uw kolommen kiezen om meer of minder ruimte in te nemen, terwijl de resterende .col s de rest gelijkmatig verdelen, met specifieke kolomklassen zoals .col-7.

Auto-sizing

In het onderstaande voorbeeld wordt een flexbox-hulpprogramma gebruikt om de inhoud verticaal te centreren en verandert .col naar .col-auto zodat uw kolommen slechts zoveel ruimte innemen als nodig is. Anders gezegd: de kolombegrootte zelf op basis van de inhoud.

Je kunt dat dan nogmaals remixen met maatspecifieke kolomklassen.

En natuurlijk worden besturingselementen voor aangepaste formulieren ondersteund.

Inline formulieren

Gebruik de .form-inline klasse om een reeks labels, formulierbesturingen en knoppen op één horizontale rij weer te geven. Formulierbesturingselementen in inline-formulieren verschillen enigszins van hun standaardstatus.

  • Besturingselementen zijn display: flex, waardoor HTML-witruimte wordt samengevouwen en u uitlijningscontrole kunt bieden met spacing en flexbox-hulpprogrammas.
  • Besturingselementen en invoergroepen ontvangen width: auto om de Bootstrap-standaard width: 100% te overschrijven.
  • Besturingselementen worden alleen inline weergegeven in viewports die ten minste 576 px breed zijn om rekening te houden met smalle viewports op mobiele apparaten.

Mogelijk moet u de breedte en uitlijning van afzonderlijke formulierbesturingselementen handmatig aanpassen met afstandsbedieningen (zoals hieronder weergegeven). Zorg er ten slotte voor dat u altijd een <label> toevoegt aan elk formulierelement, zelfs als u het moet verbergen voor bezoekers die geen schermlezer zijn met .sr-only .

Aangepaste formulierbesturingen en selecties worden ook ondersteund.

Alternatieven voor verborgen labels

Hulptechnologieën zoals schermlezers zullen problemen hebben met uw formulieren als u niet voor elke invoer een label toevoegt. Voor deze inline-formulieren kunt u de labels verbergen met de klasse .sr-only. Er zijn nog andere alternatieve methoden om een label voor ondersteunende technologieën te bieden, zoals de aria-label, aria-labelledby of title kenmerk. Als geen van deze aanwezig is, kunnen ondersteunende technologieën hun toevlucht nemen tot het gebruik van het placeholder -attribuut, indien aanwezig, maar houd er rekening mee dat het gebruik van placeholder als een vervanging voor andere labelmethoden wordt niet aanbevolen.

Help-tekst

Helptekst op blokniveau in formulieren kan worden gemaakt met .form-text (voorheen bekend als .help-block in v3). Inline helptekst kan flexibel worden geïmplementeerd met behulp van elk inline HTML-element en hulpprogramma-klassen zoals .text-muted.

Help-tekst koppelen aan formulierbesturingen

Help-tekst moet expliciet worden geassocieerd met het formuliercontrole waarnaar het verwijst met behulp van het aria-describedby attribuut. Dit zorgt ervoor dat ondersteunende technologieën, zoals schermlezers, deze helptekst aankondigen wanneer de gebruiker zich concentreert of het besturingselement betreedt.

De helptekst onder de invoer kan worden opgemaakt met .form-text. Deze klasse bevat display: block en voegt een bovenmarge toe voor een gemakkelijke spatiëring van de bovenstaande invoer.

Wachtwoord Uw wachtwoord moet 8-20 tekens lang zijn en moet letters en cijfers bevatten , en mag geen spaties, speciale tekens of emoji bevatten.

Inline-tekst kan elk typisch inline HTML-element gebruiken (of het nu een <small>, <span> of iets anders is) met niets meer dan een utility-klasse.

Uitgeschakelde formulieren

Voeg het disabled booleaanse attribuut toe aan een invoer om gebruikersinteracties te voorkomen en te laten verschijnen lichter.

Voeg de disabled kenmerk toe aan een <fieldset> om alle besturingselementen binnenin uit te schakelen.

Waarschuwing bij anchors

Standaard behandelen browsers alle native formulierbesturingen (<input>, <select> en <button> -elementen) binnen een <fieldset disabled> als uitgeschakeld, waardoor zowel toetsenbord- als muisinteractie op hen wordt voorkomen. Als uw formulier echter ook <a ... class="btn btn-*"> -elementen bevat, krijgen deze alleen de stijl pointer-events: none. Zoals opgemerkt in de sectie over uitgeschakelde status voor knoppen (en specifiek in de subsectie voor ankerelementen), is deze CSS-eigenschap nog niet gestandaardiseerd en wordt deze niet volledig ondersteund in Opera 18 en lager, of in Internet Explorer 10, en gewonnen Voorkom niet dat toetsenbordgebruikers deze links kunnen focussen of activeren. Gebruik dus voor de zekerheid aangepast JavaScript om dergelijke links uit te schakelen.

Compatibiliteit tussen browsers

Hoewel Bootstrap deze stijlen in alle browsers zal toepassen, zal Internet Explorer 11 en lager ondersteunen het disabled -attribuut op een <fieldset> niet volledig. Gebruik aangepast JavaScript om de veldset in deze browsers uit te schakelen.

Validatie

Geef uw gebruikers waardevolle, bruikbare feedback met HTML5-formuliervalidatie, beschikbaar in al onze ondersteunde browsers. Kies uit de standaardvalidatiefeedback van de browser, of implementeer aangepaste berichten met onze ingebouwde klassen en starters JavaScript.

We raden ten zeerste aan om aangepaste validatiestijlen te gebruiken, aangezien de standaardinstellingen van de browser niet worden aangekondigd aan schermlezers.

Hoe het werkt

Hier is hoe formuliervalidatie werkt met Bootstrap:

  • HTML-formuliervalidatie wordt toegepast via CSSs twee pseudo-klassen, :invalid en :valid. Het is van toepassing op <input>, <select> en <textarea> -elementen.
  • Bootstrap scopes de :invalid en :valid stijlen naar bovenliggende .was-validated klasse, meestal toegepast op de <form>. Anders wordt elk verplicht veld zonder waarde weergegeven als ongeldig bij het laden van de pagina. Op deze manier kun je kiezen wanneer je ze wilt activeren (meestal nadat een poging is gedaan om het formulier in te dienen).
  • Als reserve kunnen .is-invalid en .is-valid klassen kunnen worden gebruikt in plaats van de pseudo-klassen voor validatie aan de serverzijde. Ze hebben geen .was-validated bovenliggende klasse nodig.
  • Vanwege beperkingen in de manier waarop CSS werkt, kunnen we (momenteel) geen stijlen toepassen op een <label> die vóór een formulierbesturingselement in de DOM komt zonder de hulp van aangepast JavaScript.
  • Alle moderne browsers ondersteunen de constraint validation API, een reeks JavaScript-methoden voor het valideren van formulierbesturingselementen.
  • Feedbackberichten kunnen de standaardinstellingen van de browser gebruiken (verschillend voor elke browser, en unstylaable via CSS) of onze aangepaste feedbackstijlen met aanvullende HTML en CSS.
  • U kunt aangepaste validiteitsberichten verstrekken met setCustomValidity in JavaScript.

Met dat in gedachten, overweeg dan de volgende demos voor onze aangepaste formuliervalidatiestijlen, optionele server-side klassen en standaard browserinstellingen.

Aangepaste stijlen

Voor aangepaste Bootstrap-formuliervalidatieberichten moet u het novalidate booleaanse kenmerk toevoegen aan uw <form>. Dit schakelt de standaard feedback-tooltips van de browser uit, maar biedt nog steeds toegang tot de formuliervalidatie-APIs in JavaScript. Probeer het onderstaande formulier in te dienen; ons JavaScript onderschept de verzendknop en geeft feedback aan u door.

Wanneer u probeert te verzenden, ziet u de :invalid en :valid stijlen toegepast op uw formulierbesturingselementen.

Browserstandaards

Bent u niet geïnteresseerd in aangepaste feedbackberichten voor validatie of het schrijven van JavaScript om het gedrag van formulieren te veranderen? Allemaal goed, je kunt de standaardinstellingen van de browser gebruiken. Probeer het onderstaande formulier te verzenden. Afhankelijk van uw browser en besturingssysteem ziet u een iets andere stijl van feedback.

Hoewel deze feedbackstijlen niet kunnen worden gestileerd met CSS, kunt u de feedbacktekst nog steeds aanpassen via JavaScript.

Serverzijde

We raden aan om validatie aan de clientzijde te gebruiken, maar als u serverzijde nodig heeft, kunt u ongeldige en geldige formuliervelden aangeven met .is-invalid en .is-valid. Merk op dat .invalid-feedback ook wordt ondersteund door deze klassen.

Ondersteunde elementen

Onze voorbeeldformulieren tonen native tekstuele <input> s hierboven, maar er zijn formuliervalidatiestijlen beschikbaar voor onze besturingselementen voor aangepaste formulieren.

Tooltips

Als uw formulierlay-out het toelaat, kunt u de .{valid|invalid}-feedback klassen voor .{valid|invalid}-tooltip klassen om validatiefeedback weer te geven in een vormgegeven tooltip. Zorg ervoor dat u een ouder heeft met position: relative erop voor het plaatsen van tooltips. In het onderstaande voorbeeld hebben onze kolomklassen dit al, maar uw project vereist mogelijk een alternatieve configuratie.

Aangepaste formulieren

Voor nog meer maatwerk en kruis browserconsistentie, gebruik onze volledig aangepaste formulierelementen om de standaardinstellingen van de browser te vervangen. Ze zijn gebouwd bovenop semantische en toegankelijke opmaak, dus ze zijn solide vervangers voor elk standaard formulierbesturingselement.

Selectievakjes en radios

Elk selectievakje en radio is verpakt in een <div> met een broer of zus <span> om ons aangepaste besturingselement te maken en een <label> voor de begeleidende tekst. Structureel is dit dezelfde aanpak als onze standaard .form-check.

We gebruiken de sibling selector (~) voor al onze <input> staten – zoals :checked – om onze aangepaste formulierindicator correct op te maken. In combinatie met de .custom-control-label class, kunnen we ook de tekst voor elk item opmaken op basis van de <input> s staat.

We verbergen de standaard <input> met opacity en gebruiken de .custom-control-label om een nieuwe aangepaste formulierindicator in plaats daarvan met ::before en ::after. Helaas kunnen we geen aangepaste versie maken van alleen de <input> omdat CSSs content niet op dat element werkt.

In de aangevinkte staten gebruiken we base64 embedded SVG-pictogrammen van Open Iconic. Dit geeft ons de beste controle over styling en positionering in browsers en apparaten.

Selectievakjes

Vink dit aangepaste selectievakje aan

Aangepaste selectievakjes kan ook de :indeterminate pseudoklasse gebruiken wanneer deze handmatig is ingesteld via JavaScript (er is geen beschikbaar HTML-kenmerk om het op te geven).

Vink dit aangepaste selectievakje aan

Als je jQuery gebruikt, zou zoiets als dit voldoende moeten zijn:

Radios

Schakel deze aangepaste radio in
Of schakel deze andere aangepaste radio

Inline

Schakel deze aangepaste radio in
Of schakel deze andere aangepaste radio

Uitgeschakeld

Aangepaste selectievakjes en radios kunnen ook worden uitgeschakeld. Voeg het disabled booleaanse attribuut toe aan het <input> en de aangepaste indicator en labelbeschrijving worden automatisch opgemaakt.

Vink dit aangepaste selectievakje aan
Schakel deze aangepaste radio in

Selecteer menu

Aangepast <select> menus hebben alleen een aangepaste klasse nodig, .custom-select om de aangepaste stijlen te activeren.

U kunt ook kiezen uit kleine en grote aangepaste selecties om overeenkomen met onze tekstinvoer van vergelijkbare grootte.

Het multiple -attribuut wordt ook ondersteund:

Net als het size attribuut:

Bestandsbrowser

De bestandsinvoer is het meest van het stel en vereist extra JavaScript als je ze wilt koppelen met functioneel Kies bestand… en geselecteerde bestandsnaam tekst.

Kies bestand

We verbergen het standaardbestand <input> via en geef in plaats daarvan de stijl <label>. De knop wordt gegenereerd en gepositioneerd met ::after. Ten slotte declareren we een width en height op de <input> voor de juiste afstand voor omringende inhoud .

De strings vertalen of aanpassen

De :lang() pseudo-klasse wordt gebruikt om de vertaling van de “Browse” -tekst in andere talen. Vervang of voeg vermeldingen toe aan de $custom-file-text Sass-variabele met de relevante taal-tag en gelokaliseerde strings. De Engelse strings kunnen op dezelfde manier worden aangepast.Hier is bijvoorbeeld hoe iemand een Spaanse vertaling kan toevoegen (de taalcode van het Spaans is es):

Hier is lang(es) in actie op de aangepaste bestandsinvoer voor een Spaanse vertaling:

Seleccionar Archivo

U moet de taal van uw document (of substructuur daarvan) correct instellen om de juiste tekst te laten zien. Dit kan worden gedaan met het lang -attribuut in het <html> -element of de Content-Language HTTP-header , naast andere methoden.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *