Shembuj dhe udhëzime përdorimi për stilet e kontrollit të formave, opsionet e paraqitjes dhe komponentët e personalizuar për krijimin e një shumëllojshmërie të gjerë formash.
Vështrim i përgjithshëm
Kontrollet e formës së Bootstrap zgjerohen në stilet tona të formave të rindezura me klasa. Përdorni këto klasa për të zgjedhur ekranet e tyre të personalizuara për një paraqitje më të qëndrueshme nëpër shfletues dhe pajisje.
Sigurohuni që të përdorni një typeatribut të përshtatshëm në të gjitha hyrjet (p.sh., emailpër adresën e emailit ose numberpër informacionin numerik) për të përfituar nga kontrollet më të reja të hyrjes si verifikimi i emailit, zgjedhja e numrave dhe më shumë.
Këtu është një shembull i shpejtë për të demonstruar stilet e formës së Bootstrap. Vazhdoni të lexoni për dokumentacionin mbi klasat e kërkuara, paraqitjen e formularit dhe më shumë.
Kontrollet e formularit
Kontrollet e formës tekstuale - si <input>s, <select>s dhe <textarea>s - stilohen me .form-controlklasën. Të përfshira janë stilet për pamjen e përgjithshme, gjendjen e fokusit, madhësinë dhe më shumë.
Për hyrjet e skedarëve, ndërroni .form-controlpër .form-control-file.
Përmasat
Vendosni lartësitë duke përdorur klasa si .form-control-lgdhe .form-control-sm.
Lexo vetem
Shtoni readonlyatributin boolean në një hyrje për të parandaluar modifikimin e vlerës së hyrjes. Hyrjet vetëm për lexim duken më të lehta (ashtu si hyrjet e çaktivizuara), por ruajnë kursorin standard.
Tekst i thjeshtë vetëm për lexim
Nëse dëshironi që <input readonly>elementet në formën tuaj të stilohen si tekst i thjeshtë, përdorni .form-control-plaintextklasën për të hequr stilin e paracaktuar të fushës së formës dhe për të ruajtur margjinën dhe mbushjen e duhur.
Inputet e diapazonit
Vendosni hyrjet e diapazonit të lëvizshëm horizontalisht duke përdorur .form-control-range.
Kutitë e kontrollit dhe radiot
Kutitë e kontrollit dhe radiot e parazgjedhura përmirësohen me ndihmën e .form-checknjë klase të vetme për të dy llojet e hyrjes që përmirëson paraqitjen dhe sjelljen e elementeve të tyre HTML . Kutitë e kontrollit janë për zgjedhjen e një ose disa opsioneve në një listë, ndërsa radiot janë për zgjedhjen e një opsioni nga shumë.
Kutitë e kontrollit të çaktivizuara dhe radiot mbështeten. Atributi disableddo të aplikojë një ngjyrë më të çelur për të ndihmuar në përcaktimin e gjendjes së hyrjes.
Kutitë e kontrollit dhe butonat e radios mbështesin vërtetimin e formularit të bazuar në HTML dhe ofrojnë etiketa koncize dhe të arritshme. Si të tilla, <input>s-të dhe <label>s-të tanë janë elementë vëlla-motra në krahasim me një <input>brenda një <label>. Kjo është pak më e folur pasi duhet të specifikoni iddhe foratributet për të lidhur <input>dhe <label>.
E parazgjedhur (e grumbulluar)
Si parazgjedhje, çdo numër kutish kontrolli dhe radiosh që janë të afërta do të vendosen vertikalisht dhe do të vendosen në mënyrë të përshtatshme me .form-check.
Në rradhë
Gruponi kutitë e kontrollit ose radiot në të njëjtin rresht horizontal duke shtuar .form-check-inlinenë ndonjë .form-check.
Pa etiketa
Shto .position-staticte hyrjet brenda të .form-checkcilave nuk ka tekst etikete. Mos harroni të jepni ende një formë etiketimi për teknologjitë ndihmëse (për shembull, duke përdorur aria-label).
Paraqitja
Meqenëse Bootstrap zbatohet display: blockdhe width: 100%pothuajse në të gjitha kontrollet tona të formave, format si parazgjedhje do të grumbullohen vertikalisht. Klasa shtesë mund të përdoren për të ndryshuar këtë plan urbanistik në bazë të formës.
Formoni grupe
Klasa .form-groupështë mënyra më e lehtë për të shtuar një strukturë në forma. Ai siguron një klasë fleksibël që inkurajon grupimin e duhur të etiketave, kontrolleve, tekstit opsional të ndihmës dhe mesazheve të vërtetimit të formularit. Si parazgjedhje, ai zbatohet vetëm margin-bottom, por zgjedh stile shtesë .form-inlinesipas nevojës. Përdoreni atë me <fieldset>s, <div>s ose pothuajse çdo element tjetër.
Rrjeti i formës
Forma më komplekse mund të ndërtohen duke përdorur klasat tona të rrjetit. Përdorni këto për paraqitjet e formave që kërkojnë kolona të shumta, gjerësi të ndryshme dhe opsione shtesë të shtrirjes.
Formoni rreshtin
Ju gjithashtu mund të ndërroni .rowme .form-row, një variant të rreshtit tonë standard të rrjetës që anashkalon ulluqet e parazgjedhura të kolonës për paraqitje më të ngushta dhe më kompakte.
Paraqitjet më komplekse mund të krijohen gjithashtu me sistemin e rrjetit.
Forma horizontale
Krijoni forma horizontale me rrjetin duke shtuar .rowklasën për të formuar grupe dhe duke përdorur .col-*-*klasat për të specifikuar gjerësinë e etiketave dhe kontrolleve tuaja. Sigurohuni që t'i shtoni .col-form-labeledhe s-ve tuaja <label>në mënyrë që ato të jenë të përqendruara vertikalisht me kontrollet e formave të lidhura me to.
Ndonjëherë, mund t'ju duhet të përdorni shërbimet e marzhit ose mbushjes për të krijuar atë shtrirje të përsosur që ju nevojitet. Për shembull, ne kemi hequr padding-topetiketën e hyrjeve të radios së grumbulluar për të përafruar më mirë vijën bazë të tekstit.
Madhësia e etiketës së formës horizontale
Sigurohuni që të përdorni .col-form-label-smose .col-form-label-lgnë <label>s ose <legend>s tuaj për të ndjekur saktë madhësinë e .form-control-lgdhe .form-control-sm.
Madhësia e kolonës
Siç tregohet në shembujt e mëparshëm, sistemi ynë i rrjetit ju lejon të vendosni çdo numër .cols brenda një .rowose .form-row. Ata do të ndajnë gjerësinë e disponueshme në mënyrë të barabartë midis tyre. Ju gjithashtu mund të zgjidhni një nëngrup të kolonave tuaja për të zënë pak a shumë hapësirë, ndërsa pjesa e mbetur .coltë ndajë në mënyrë të barabartë pjesën tjetër, me klasa të veçanta kolonash si .col-7.
Përmasat automatike
Shembulli më poshtë përdor një mjet flexbox për të përqendruar vertikalisht përmbajtjen dhe ndryshon .colnë .col-automënyrë që kolonat tuaja të zënë vetëm aq hapësirë sa nevojitet. E thënë ndryshe, madhësia e kolonës bëhet në bazë të përmbajtjes.
Më pas mund ta ripërzieni atë edhe një herë me klasa kolone specifike për madhësi.
Përdorni .form-inlineklasën për të shfaqur një sërë etiketash, kontrolle formash dhe butona në një rresht të vetëm horizontal. Kontrollet e formave brenda formularëve të linjës ndryshojnë pak nga gjendjet e tyre të paracaktuara.
Kontrollet janë display: flex, duke shembur çdo hapësirë të bardhë HTML dhe duke ju lejuar të siguroni kontrollin e shtrirjes me shërbimet e ndarjes dhe flexbox .
Kontrollet dhe grupet hyrëse marrin width: autopër të anashkaluar parazgjedhjen e Bootstrap width: 100%.
Kontrollet shfaqen në linjë vetëm në portat e shikimit që kanë gjerësi të paktën 576 pikselë për të llogaritur portat e ngushta të shikimit në pajisjet celulare.
Mund t'ju duhet të adresoni manualisht gjerësinë dhe shtrirjen e kontrolleve individuale të formularit me programet e ndarjes (siç tregohet më poshtë). Së fundi, sigurohuni që të përfshini gjithmonë një <label>me çdo kontroll formulari, edhe nëse duhet ta fshihni atë nga vizitorët që nuk e lexojnë ekranin me .sr-only.
Mbështeten gjithashtu kontrollet dhe përzgjedhjet e formularit të personalizuar.
Alternativa për etiketat e fshehura
Teknologjitë ndihmëse si lexuesit e ekranit do të kenë probleme me format tuaja nëse nuk përfshini një etiketë për çdo hyrje. Për këto forma inline, ju mund t'i fshehni etiketat duke përdorur .sr-onlyklasën. Ka metoda të tjera alternative për të siguruar një etiketë për teknologjitë ndihmëse, të tilla si atributi aria-label, aria-labelledbyose . titleNëse asnjëra nga këto nuk është e pranishme, teknologjitë ndihmëse mund të përdorin përdorimin e placeholderatributit, nëse është i pranishëm, por kini parasysh se përdorimi i tij placeholdersi zëvendësim për metodat e tjera të etiketimit nuk këshillohet.
Teksti i ndihmës
Teksti i ndihmës në nivel blloku në forma mund të krijohet duke përdorur .form-text(i njohur më parë si .help-blocknë v3). Teksti i ndihmës në linjë mund të zbatohet në mënyrë fleksibël duke përdorur çdo element HTML inline dhe klasa të shërbimeve si .text-muted.
Lidhja e tekstit të ndihmës me kontrollet e formularit
Teksti i ndihmës duhet të shoqërohet në mënyrë eksplicite me kontrollin e formës me të cilin lidhet duke përdorur aria-describedbyatributin. Kjo do të sigurojë që teknologjitë ndihmëse - të tilla si lexuesit e ekranit - do ta shpallin këtë tekst ndihme kur përdoruesi të fokusohet ose të hyjë në kontroll.
Teksti i ndihmës më poshtë hyrjet mund të stilohet me .form-text. Kjo klasë përfshin display: blockdhe shton një diferencë të lartë për ndarje të lehtë nga inputet e mësipërme.
Fjalëkalimi juaj duhet të jetë 8-20 karaktere, të përmbajë shkronja dhe numra dhe nuk duhet të përmbajë hapësira, karaktere speciale ose emoji.
Teksti inline mund të përdorë çdo element tipik HTML inline (qoftë një <small>, <span>, ose diçka tjetër) me asgjë më shumë se një klasë të dobishme.
Format me aftësi të kufizuara
Shto disabledatributin boolean në një hyrje për të parandaluar ndërveprimet e përdoruesit dhe për ta bërë atë të duket më i lehtë.
Shtoni disabledatributin në a <fieldset>për të çaktivizuar të gjitha kontrollet brenda.
Kujdes me spiranca
Si parazgjedhje, shfletuesit do t'i trajtojnë të gjitha kontrollet e formës ( <input>, <select>dhe <button>elementët) brenda një <fieldset disabled>si të paaftë, duke parandaluar ndërveprimet e tastierës dhe të miut në to. Megjithatë, nëse forma juaj përfshin gjithashtu <a ... class="btn btn-*">elementë, atyre do t'u jepet vetëm një stil i pointer-events: none. Siç u përmend në seksionin rreth gjendjes së çaktivizuar për butonat (dhe veçanërisht në nën-seksionin për elementët e ankorimit), kjo veçori CSS nuk është ende e standardizuar dhe nuk mbështetet plotësisht në Internet Explorer 10 dhe nuk do të parandalojë që përdoruesit e tastierës të jenë në gjendje të fokusojë ose aktivizojë këto lidhje. Pra, për të qenë të sigurt, përdorni JavaScript të personalizuar për të çaktivizuar lidhje të tilla.
Pajtueshmëria me shfletues
Ndërsa Bootstrap do t'i zbatojë këto stile në të gjithë shfletuesit, Internet Explorer 11 dhe më poshtë nuk e mbështesin plotësisht disabledatributin në një <fieldset>. Përdorni JavaScript të personalizuar për të çaktivizuar grupin e fushave në këta shfletues.
Vleresimi
Jepni komente të vlefshme dhe të zbatueshme për përdoruesit tuaj me vërtetimin e formularit HTML5 – i disponueshëm në të gjithë shfletuesit tanë të mbështetur . Zgjidhni nga komentet e verifikimit të parazgjedhur të shfletuesit ose zbatoni mesazhe të personalizuara me klasat tona të integruara dhe JavaScript fillestar.
Aktualisht rekomandojmë përdorimin e stileve të personalizuara të vlefshmërisë, pasi mesazhet e verifikimit të paracaktuar të shfletuesit nuk ekspozohen vazhdimisht ndaj teknologjive ndihmëse në të gjithë shfletuesit (më së shumti, Chrome në desktop dhe celular).
Si punon
Ja se si funksionon vërtetimi i formularit me Bootstrap:
Vlefshmëria e formës HTML zbatohet nëpërmjet dy pseudo-klasave të CSS, :invaliddhe :valid. Zbatohet për <input>, <select>dhe <textarea>elementë.
Bootstrap shtrin stilet :invaliddhe :validnë klasën prind .was-validated, zakonisht aplikohet në <form>. Përndryshe, çdo fushë e kërkuar pa vlerë shfaqet si e pavlefshme në ngarkimin e faqes. Në këtë mënyrë, ju mund të zgjidhni kur t'i aktivizoni ato (zakonisht pasi tentohet të dorëzohet formulari).
Për të rivendosur pamjen e formularit (për shembull, në rastin e paraqitjeve dinamike të formularit duke përdorur AJAX), hiqni .was-validatedklasën nga <form>përsëri pas dorëzimit.
Si rezervë, .is-invaliddhe .is-validklasat mund të përdoren në vend të pseudo-klasave për vërtetimin nga ana e serverit . Ata nuk kërkojnë një .was-validatedklasë prindërore.
Për shkak të kufizimeve në mënyrën se si funksionon CSS, ne nuk mund (për momentin) të aplikojmë stile në një <label>që vjen përpara një kontrolli formulari në DOM pa ndihmën e JavaScript-it të personalizuar.
Të gjithë shfletuesit modern mbështesin API-në e vlefshmërisë së kufizimeve , një seri metodash JavaScript për vërtetimin e kontrolleve të formularit.
Mesazhet e komenteve mund të përdorin parazgjedhjet e shfletuesit (të ndryshme për çdo shfletues, dhe të pa stilizuara nëpërmjet CSS) ose stilet tona të personalizuara të komenteve me HTML dhe CSS shtesë.
Ju mund të jepni mesazhe të personalizuara të vlefshmërisë setCustomValiditynë JavaScript.
Me këtë në mendje, merrni parasysh demonstrimet e mëposhtme për stilet tona të verifikimit të formularit të personalizuar, klasat opsionale të serverit dhe parazgjedhjet e shfletuesit.
Stilet e personalizuara
Për mesazhet e personalizuara të vërtetimit të formularit Bootstrap, do t'ju duhet të shtoni novalidateatributin boolean në <form>. Kjo çaktivizon këshillat e parazgjedhur të veglave të komenteve të shfletuesit, por gjithsesi siguron qasje në API-të e vërtetimit të formularit në JavaScript. Mundohuni të dorëzoni formularin e mëposhtëm; JavaScript ynë do të përgjojë butonin e dorëzimit dhe do t'ju përcjellë komentet. Kur përpiqeni të dorëzoni, do të shihni stilet :invaliddhe :validtë aplikuara në kontrollet e formularit tuaj.
Stilet e personalizuara të komenteve aplikojnë ngjyra të personalizuara, kufij, stile fokusi dhe ikona të sfondit për të komunikuar më mirë reagimet. Ikonat e sfondit për <select>s janë të disponueshme vetëm me .custom-selectdhe jo .form-control.
Parazgjedhjet e shfletuesit
Nuk jeni të interesuar për mesazhet e komenteve të verifikimit të personalizuar ose për të shkruar JavaScript për të ndryshuar sjelljet e formularit? Gjithçka mirë, mund të përdorni parazgjedhjet e shfletuesit. Provoni të dërgoni formularin e mëposhtëm. Në varësi të shfletuesit dhe sistemit operativ, do të shihni një stil paksa të ndryshëm reagimesh.
Ndërsa këto stile reagimesh nuk mund t�� stilohen me CSS, ju mund të personalizoni tekstin e komenteve përmes JavaScript.
Ana e serverit
Ne rekomandojmë përdorimin e vlefshmërisë nga ana e klientit, por në rast se keni nevojë për vërtetim nga ana e serverit, mund të tregoni fushat e pavlefshme dhe të vlefshme të formularit me .is-invaliddhe .is-valid. Vini re se .invalid-feedbackmbështetet edhe me këto klasa.
Elementet e mbështetur
Stilet e verifikimit janë të disponueshme për kontrollet dhe komponentët e mëposhtëm të formularit:
<input>s dhe <textarea>s me .form-control(duke përfshirë deri në një .form-controlnë grupet hyrëse)
<select>s me .form-controlose.custom-select
.form-checks
.custom-checkboxs dhe .custom-radios
.custom-file
Këshilla për veglat
Nëse faqosja e formularit tuaj e lejon këtë, ju mund t'i ndërroni .{valid|invalid}-feedbackklasat me .{valid|invalid}-tooltipklasa për të shfaqur komentet e vërtetimit në një këshillë mjeti të stiluar. Sigurohuni që të keni një prind me position: relativetë për pozicionimin e majës së veglave. Në shembullin e mëposhtëm, klasat tona të kolonave e kanë tashmë këtë, por projekti juaj mund të kërkojë një konfigurim alternativ.
Përshtatje
Gjendjet e verifikimit mund të personalizohen nëpërmjet Sass me $form-validation-stateshartën. E vendosur në _variables.scssskedarin tonë, kjo hartë Sass është mbështjellë për të gjeneruar gjendjet e parazgjedhura valid/ invalidvleftësimit. Përfshirë është një hartë e mbivendosur për përshtatjen e ngjyrës dhe ikonës së çdo shteti. Ndërsa asnjë shtet tjetër nuk mbështetet nga shfletuesit, ata që përdorin stile të personalizuara mund të shtojnë lehtësisht reagime më komplekse të formës.
Ju lutemi vini re se ne nuk rekomandojmë personalizimin e këtyre vlerave pa modifikuar gjithashtu form-validation-statemiksin.
Forma të personalizuara
Për më shumë personalizim dhe qëndrueshmëri të tërthortë të shfletuesit, përdorni elementët tanë të formularit plotësisht të personalizuar për të zëvendësuar parazgjedhjet e shfletuesit. Ato janë ndërtuar në krye të shënimit semantik dhe të aksesueshëm, kështu që ato janë zëvendësime solide për çdo kontroll të formës së paracaktuar.
Kutitë e kontrollit dhe radiot
Çdo kuti e zgjedhjes, radio <input>dhe <label>çiftim janë mbështjellë në një <div>për të krijuar kontrollin tonë të personalizuar. Strukturisht, kjo është e njëjta qasje si parazgjedhja jonë .form-check.
Ne përdorim përzgjedhësin e vëllezërve ( ~) për të gjitha <input>gjendjet tona—si p.sh.— :checkedpër të stiluar siç duhet treguesin tonë të formës së personalizuar. Kur kombinohet me .custom-control-labelklasën, ne gjithashtu mund të stilojmë tekstin për çdo artikull bazuar në gjendjen <input>'.
Ne fshehim parazgjedhjen <input>me opacitydhe përdorim .custom-control-labelpër të ndërtuar një tregues të ri të formës së personalizuar në vend të tij me ::beforedhe ::after. Fatkeqësisht, ne nuk mund të ndërtojmë një të personalizuar vetëm nga ai, <input>sepse CSS-të contentnuk funksionojnë në atë element.
Në gjendjet e kontrolluara, ne përdorim ikona SVG të ngulitura base64 nga Open Iconic . Kjo na siguron kontrollin më të mirë për stilimin dhe pozicionimin nëpër shfletues dhe pajisje.
Kutitë e kontrollit
Kutitë e kontrollit të personalizuara gjithashtu mund të përdorin :indeterminateklasën pseudo kur vendosen manualisht përmes JavaScript (nuk ka asnjë atribut të disponueshëm HTML për ta specifikuar atë).
Nëse jeni duke përdorur jQuery, diçka e tillë duhet të mjaftojë:
Radiot
Në rradhë
I paaftë
Kutitë e kontrollit të personalizuara dhe radiot gjithashtu mund të çaktivizohen. Shtoni disabledatributin boolean në <input>dhe treguesi i personalizuar dhe përshkrimi i etiketës do të stilohen automatikisht.
Çelësat
Një ndërprerës ka shënjimin e një kutie të personalizuar, por përdor .custom-switchklasën për të dhënë një ndërprerës ndërrimi. Ndërprerësit gjithashtu mbështesin disabledatributin.
Zgjidhni menunë
<select>Menytë e personalizuara kanë nevojë vetëm për një klasë të personalizuar, .custom-selectpër të aktivizuar stilet e personalizuara. Stilet e personalizuara janë të kufizuara në <select>pamjen fillestare dhe nuk mund të modifikojnë <option>s për shkak të kufizimeve të shfletuesit.
Ju gjithashtu mund të zgjidhni nga përzgjedhjet e vogla dhe të mëdha me porosi që të përputhen me inputet tona të tekstit me madhësi të ngjashme.
Atributi multiplembështetet gjithashtu:
Siç është sizeatributi:
Gama
Krijoni <input type="range">kontrolle të personalizuara me .custom-range. Pista (sfondi) dhe gishti i madh (vlera) janë të stiluara që të shfaqen njësoj nëpër shfletues. Meqenëse vetëm IE dhe Firefox mbështesin "mbushjen" e gjurmës së tyre nga e majta ose e djathta e gishtit të madh si një mjet për të treguar vizualisht përparimin, ne aktualisht nuk e mbështesim atë.
Inputet e rangut kanë vlera të nënkuptuara për mindhe max— 0dhe 100, përkatësisht. Ju mund të specifikoni vlera të reja për ata që përdorin atributet mindhe .max
Si parazgjedhje, futjet e diapazonit "kalojnë" në vlerat e numrave të plotë. Për ta ndryshuar këtë, mund të specifikoni një stepvlerë. Në shembullin e mëposhtëm, ne dyfishojmë numrin e hapave duke përdorur step="0.5".
Shfletuesi i skedarëve
Shtojca e rekomanduar për të animuar hyrjen e skedarit të personalizuar: bs-custom-file-input , kjo është ajo që ne po përdorim aktualisht këtu në dokumentet tona.
Hyrja e skedarit është më e çuditshmja e grupit dhe kërkon JavaScript shtesë nëse dëshironi t'i lidhni ato me " Zgjidh skedarin" funksional... dhe tekstin e zgjedhur të emrit të skedarit.
Ne e fshehim skedarin e paracaktuar <input>nëpërmjet opacitydhe në vend të kësaj e stilojmë <label>. Butoni gjenerohet dhe pozicionohet me ::after. Së fundi, ne deklarojmë një widthdhe heightnë <input>hapësirën e duhur për përmbajtjen përreth.
Përkthimi ose personalizimi i vargjeve me SCSS
Pseudo - :lang()klasa përdoret për të lejuar përkthimin e tekstit "Shfleto" në gjuhë të tjera. Anuloni ose shtoni hyrjet në $custom-file-textndryshoren Sass me etiketën përkatëse të gjuhës dhe vargjet e lokalizuara. Vargjet angleze mund të personalizohen në të njëjtën mënyrë. Për shembull, ja se si mund të shtohet një përkthim në spanjisht (kodi i gjuhës spanjolle është es):
Këtu është lang(es)në veprim në hyrjen e skedarit të personalizuar për një përkthim në spanjisht:
Ju duhet të vendosni saktë gjuhën e dokumentit tuaj (ose nënpemës së tij) në mënyrë që të shfaqet teksti i saktë. Kjo mund të bëhet duke përdorur atributin langnë element <html>ose Content-Languagekokën HTTP , midis metodave të tjera.
Përkthimi ose personalizimi i vargjeve me HTML
Bootstrap ofron gjithashtu një mënyrë për të përkthyer tekstin "Shfleto" në HTML me data-browseatributin që mund të shtohet në etiketën e hyrjes me porosi (shembull në holandisht):