Egzanp ak direktiv itilizasyon pou estil kontwòl fòm, opsyon layout, ak konpozan koutim pou kreye yon gran varyete fòm.
Apèsi sou lekòl la
Kontwòl fòm Bootstrap yo elaji sou estil fòm Rebooted nou yo ak klas yo. Sèvi ak klas sa yo pou patisipe nan ekspozisyon Customized yo pou yon rann ki pi konsistan atravè navigatè ak aparèy.
Asire ou ke ou sèvi ak yon typeatribi apwopriye sou tout antre (pa egzanp, emailpou adrès imel oswa numberpou enfòmasyon nimerik) pou pwofite de nouvo kontwòl antre tankou verifikasyon imel, seleksyon nimewo, ak plis ankò.
Men yon egzanp rapid pou demontre estil fòm Bootstrap la. Kontinye lekti pou dokimantasyon sou klas obligatwa yo, fòm fòm, ak plis ankò.
Kontwòl fòm
Kontwòl fòm tèks yo-tankou <input>s, <select>s, ak <textarea>s-yo style ak .form-controlklas la. Gen estil pou aparans jeneral, eta konsantre, gwosè, ak plis ankò.
Asire ou ke ou eksplore fòm koutim nou an plis style <select>s.
Pou antre fichye a, chanje .form-controlpou .form-control-file.
Dimansyon
Mete wotè lè l sèvi avèk klas tankou .form-control-lgak .form-control-sm.
Li sèlman
Ajoute readonlyatribi boolean an sou yon opinyon pou anpeche modifikasyon valè opinyon an. Antre lekti sèlman parèt pi lejè (menm jan ak entrain andikape), men kenbe kurseur estanda a.
Tèks senp lekti sèlman
Si ou vle gen <input readonly>eleman nan fòm ou a estile kòm tèks klè, sèvi ak .form-control-plaintextklas la pou retire fòm nan jaden fòm default epi konsève maj ki kòrèk la ak padding.
Ranje Antre
Mete entrées ranje defile orizontal lè l sèvi avèk .form-control-range.
Case ak radyo
Yo amelyore kaz ak radyo yo defo ak èd .form-check, yon sèl klas pou tou de kalite antre ki amelyore layout ak konpòtman eleman HTML yo . Bwat yo se pou chwazi youn oswa plizyè opsyon nan yon lis, pandan y ap radyo yo se pou chwazi yon opsyon nan plizyè.
Yo sipòte kaz ak radyo ki andikape. Atribi disableda pral aplike yon koulè pi lejè pou ede endike eta opinyon an.
Bwat ak bouton radyo yo sipòte validasyon fòm ki baze sou HTML epi yo bay etikèt ki kout, aksesib. Kòm sa yo, <input>s ak <label>s nou yo se eleman frè ak sè yo opoze ak yon <input>nan yon <label>. Sa a se yon ti kras plis verbose kòm ou dwe presize idak foratribi yo gen rapò <input>ak ak <label>.
Default (anpille)
Pa default, nenpòt kantite kaz ak radyo ki se frè ak sè imedyat yo pral anpile vètikal ak yon espas apwopriye ak .form-check.
Nan liy
Gwoup kaz oswa radyo sou menm ranje orizontal la lè w ajoute .form-check-inlinenan nenpòt .form-check.
San etikèt
Ajoute .position-staticnan entrain .form-checkki pa gen okenn tèks etikèt. Sonje toujou bay kèk fòm etikèt pou teknoloji asistans (pa egzanp, lè l sèvi avèk aria-label).
Layout
Depi Bootstrap aplike display: blockak width: 100%prèske tout kontwòl fòm nou yo, fòm yo pral pa default pile vètikal. Lòt klas yo ka itilize pou varye layout sa a sou yon baz pou chak fòm.
Fòme gwoup yo
Klas .form-groupla se fason ki pi fasil pou ajoute kèk estrikti nan fòm yo. Li bay yon klas fleksib ki ankouraje bon gwoupman etikèt, kontwòl, tèks èd opsyonèl, ak mesaj validation fòm. Pa default li aplike sèlman margin-bottom, men li chwazi estil adisyonèl nan .form-inlinejan sa nesesè. Sèvi ak li ak <fieldset>s, <div>s, oswa prèske nenpòt lòt eleman.
Fòm griyaj
Fòm ki pi konplèks yo ka bati lè l sèvi avèk klas griy nou yo. Sèvi ak sa yo pou fòm fòm ki mande plizyè kolòn, lajè varye, ak opsyon aliyman adisyonèl.
Fòm ranje
Ou ka chanje tou .rowpou .form-row, yon varyasyon nan ranje kadriyaj estanda nou an ki pase plis pase goutyè kolòn default yo pou layout pi sere ak plis kontra enfòmèl ant.
Layout ki pi konplèks yo ka kreye tou ak sistèm kadriyaj la.
Fòm orizontal
Kreye fòm orizontal ak kadriyaj la lè w ajoute .rowklas la pou fòme gwoup epi itilize .col-*-*klas yo pou presize lajè etikèt ou yo ak kontwòl yo. Asire ou ke ou ajoute .col-form-labelnan <label>s ou tou pou yo ap vètikal santre ak kontwòl fòm ki asosye yo.
Pafwa, ou petèt bezwen sèvi ak sèvis piblik Marge oswa padding pou kreye aliyman pafè ou bezwen. Pou egzanp, nou te retire padding-topetikèt sou antre radyo anpile nou an pou pi byen aliman debaz tèks la.
Orizontal fòm etikèt gwosè
Asire w ou sèvi ak .col-form-label-smou .col-form-label-lgpou ou <label>kòrèkteman <legend>swiv gwosè .form-control-lgak .form-control-sm.
Dimansyon kolòn
Jan yo montre nan egzanp anvan yo, sistèm kadriyaj nou an pèmèt ou mete nenpòt kantite .cols nan yon .rowoswa .form-row. Yo pral divize lajè ki disponib egalman ant yo. Ou ka chwazi tou yon ti gwoup kolòn ou yo pou pran plis oswa mwens espas, pandan y ap rès .colyo divize rès la egalman, ak klas kolòn espesifik tankou .col-7.
Oto-gwosè
Egzanp ki anba a sèvi ak yon sèvis piblik flexbox pou santre sa ki an vètikal ak chanjman .colpou .col-autokolòn ou yo sèlman pran otan espas sa nesesè. Mete yon lòt fason, gwosè kolòn nan tèt li ki baze sou kontni an.
Lè sa a, ou ka remix sa yon lòt fwa ankò ak klas kolòn gwosè espesifik.
Sèvi ak .form-inlineklas la pou montre yon seri etikèt, kontwòl fòm, ak bouton sou yon sèl ranje orizontal. Kontwòl fòm nan fòm enline yo varye yon ti kras nan eta default yo.
Kontwòl yo se display: flex, efondre nenpòt espas blan HTML ak pèmèt ou bay kontwòl aliyman ak espas ak sèvis piblik flexbox .
Kontwòl ak gwoup antre resevwa width: autopou pase sou valè Bootstrap default la width: 100%.
Kontwòl yo parèt sèlman nan liy nan pòch yo ki gen omwen 576 px lajè pou konsidere pòch yo etwat sou aparèy mobil.
Ou ka bezwen manyèlman adrese lajè ak aliyman kontwòl fòm endividyèl yo ak sèvis piblik espas (jan yo montre anba a). Anfen, asire w ke ou toujou mete yon <label>ak chak kontwòl fòm, menm si ou bezwen kache li nan vizitè ki pa lektè ekran ak .sr-only.
Kontwòl fòm koutim ak seleksyon yo sipòte tou.
Altènatif pou etikèt kache yo
Teknoloji asistans tankou lektè ekran pral gen pwoblèm ak fòm ou yo si ou pa mete yon etikèt pou chak opinyon. Pou fòm enline sa yo, ou ka kache etikèt yo lè l sèvi avèk .sr-onlyklas la. Gen lòt metòd altènatif pou bay yon etikèt pou teknoloji asistans, tankou aria-label, aria-labelledbyoswa titleatribi. Si pa gen youn nan sa yo ki prezan, teknoloji asistans yo ka itilize itilize placeholderatribi a, si yo prezan, men sonje ke itilizasyon placeholderkòm yon ranplasman pou lòt metòd etikèt yo pa konseye.
Ede tèks
Tèks èd nan nivo blòk nan fòm yo ka kreye lè l sèvi avèk .form-text(ki te deja konnen kòm .help-blocknan v3). Tèks èd Inline ka aplike yon fason fleksib lè l sèvi avèk nenpòt eleman HTML aliye ak klas sèvis piblik tankou .text-muted.
Asosye tèks èd ak kontwòl fòm
Tèks èd yo ta dwe asosye klèman ak kontwòl fòm li gen rapò ak lè l sèvi avèk aria-describedbyatribi a. Sa a pral asire ke teknoloji asistans-tankou lektè ekran-ap anonse tèks èd sa a lè itilizatè a konsantre oswa antre nan kontwòl la.
Tèks èd ki anba a antre yo ka style ak .form-text. Klas sa a gen ladan display: blockepi ajoute kèk maj pi wo pou espas fasil soti nan entrain ki anwo yo.
Modpas ou a dwe genyen 8-20 karaktè, li dwe genyen lèt ak nimewo, epi li pa dwe genyen espas, karaktè espesyal oswa emoji.
Tèks Inline ka sèvi ak nenpòt eleman HTML enline tipik (ke se yon <small>, <span>, oswa yon lòt bagay) ki pa gen anyen plis pase yon klas sèvis piblik.
Fòm andikape
Ajoute disabledatribi boolean an sou yon opinyon pou anpeche entèraksyon itilizatè yo epi fè li parèt pi lejè.
Ajoute disabledatribi a nan yon <fieldset>pou enfim tout kontwòl ki nan.
Opozisyon ak lankr
Pa default, navigatè yo pral trete tout kontwòl fòm natif natal ( <input>, <select>ak <button>eleman) andedan yon <fieldset disabled>kòm andikape, anpeche tou de entèraksyon klavye ak sourit sou yo. Sepandan, si fòm ou a gen ladan tou <a ... class="btn btn-*">eleman, yo pral sèlman bay sa yo yon style nan pointer-events: none. Jan yo note sa nan seksyon sou eta andikape pou bouton yo (e espesyalman nan sou-seksyon pou eleman jete lank), pwopriyete CSS sa a poko estandadize epi li pa konplètman sipòte nan Internet Explorer 10, epi li p ap anpeche itilizatè klavye yo. kapab konsantre oswa aktive lyen sa yo. Se konsa, yo dwe an sekirite, sèvi ak JavaScript koutim pou enfim lyen sa yo.
Konpatibilite kwa-navigatè
Pandan ke Bootstrap pral aplike estil sa yo nan tout navigatè, Internet Explorer 11 ak anba a pa konplètman sipòte disabledatribi a sou yon <fieldset>. Sèvi ak JavaScript koutim pou enfim fieldset nan navigatè sa yo.
Validasyon
Bay itilizatè ou yo fidbak ki gen anpil valè ak aksyon ak validation fòm HTML5 – disponib nan tout navigatè nou yo sipòte . Chwazi nan fidbak validasyon default navigatè a, oswa aplike mesaj koutim ak klas entegre nou yo ak JavaScript starter.
Kounye a nou rekòmande pou itilize estil validation personnalisé, kòm navigatè natif natal mesaj validation default yo pa toujou ekspoze a teknoloji asistans nan tout navigatè (pi miyò, Chrome sou Desktop ak mobil).
Ki jan li fonksyone
Men ki jan validasyon fòm travay ak Bootstrap:
Validasyon fòm HTML aplike atravè de pseudo-klas CSS yo, :invalidak :valid. Li aplike a <input>, <select>, ak <textarea>eleman yo.
Bootstrap sijè a :invalidak :validestil nan klas paran .was-validated, anjeneral, aplike nan <form>. Sinon, nenpòt jaden obligatwa san yon valè parèt kòm envalid sou chaj paj la. Nan fason sa a, ou ka chwazi ki lè pou aktive yo (tipikman apre yo fin eseye soumèt fòm).
Pou reset aparans fòm nan (pa egzanp, nan ka soumèt fòm dinamik lè l sèvi avèk AJAX), retire .was-validatedklas la nan <form>ankò apre soumèt.
Kòm yon sekou, .is-invalidak .is-validklas yo ka itilize olye pou yo pseudo-klas yo pou validation bò sèvè . Yo pa bezwen yon .was-validatedklas paran.
Akòz kontrent nan fason CSS travay, nou pa ka (kounye a) aplike estil nan yon <label>ki vini anvan yon kontwòl fòm nan DOM a san èd nan JavaScript koutim.
Tout navigatè modèn yo sipòte API validation contrainte , yon seri metòd JavaScript pou validation kontwòl fòm yo.
Mesaj Feedback yo ka itilize defo navigatè yo (diferan pou chak navigatè, epi ki pa gen stil atravè CSS) oswa estil fidbak koutim nou yo ak HTML ak CSS adisyonèl.
Ou ka bay mesaj validite koutim ak setCustomValiditynan JavaScript.
Avèk sa nan tèt ou, konsidere demonstrasyon sa yo pou estil validation fòm koutim nou yo, klas bò sèvè opsyonèl, ak default navigatè.
Styles koutim
Pou mesaj validation fòm Bootstrap koutim, w ap bezwen ajoute novalidateatribi boolean nan <form>. Sa a enfim konsèy zouti yo nan navigatè a defo, men li toujou bay aksè a API validasyon fòm yo nan JavaScript. Eseye soumèt fòm ki anba a; JavaScript nou an pral entèsepte bouton soumèt la ak relè fidbak ba ou. Lè w ap eseye soumèt, ou pral wè estil yo :invalidak :validaplike nan kontwòl fòm ou yo.
Estil fidbak koutim aplike koulè koutim, fwontyè, estil konsantre, ak ikon background yo pi byen kominike fidbak. Ikon background pou <select>s yo disponib sèlman ak .custom-select, epi yo pa .form-control.
Defo navigatè a
Ou pa enterese nan mesaj fidbak validasyon koutim oswa ekri JavaScript pou chanje konpòtman fòm? Tout bon, ou ka itilize default navigatè yo. Eseye soumèt fòm ki anba a. Tou depan de navigatè ou a ak OS, ou pral wè yon style yon ti kras diferan nan fidbak.
Pandan ke estil fidbak sa yo pa ka style ak CSS, ou ka toujou Customize tèks la fidbak atravè JavaScript.
Bò sèvè
Nou rekòmande pou sèvi ak validation bò kliyan, men nan ka ou bezwen validation bò sèvè, ou ka endike jaden fòm ki pa valab ak valab ak .is-invalidak .is-valid. Remake byen ke .invalid-feedbackse sipòte tou ak klas sa yo.
Eleman sipòte
Estil validation yo disponib pou kontwòl fòm sa yo ak eleman sa yo:
<input>s ak <textarea>s ak .form-control(ki gen ladan jiska youn .form-controlnan gwoup antre)
<select>s ak .form-controloswa.custom-select
.form-checks
.custom-checkboxs ak .custom-radios
.custom-file
Konsèy zouti
Si fòm fòm ou a pèmèt li, ou ka chanje .{valid|invalid}-feedbackklas yo pou .{valid|invalid}-tooltipklas yo pou montre fidbak validation nan yon konsèy sou fason. Asire ou ke ou gen yon paran ak position: relativesou li pou pwezante konsèy. Nan egzanp ki anba a, klas kolòn nou yo gen sa a deja, men pwojè ou a ka mande pou yon konfigirasyon altènatif.
Pèrsonalizasyon
Eta Validasyon yo ka Customized atravè Sass ak $form-validation-stateskat la. Sitiye nan _variables.scssdosye nou an, kat Sass sa a se boukle pou jenere eta default valid/ invalidvalidation yo. Gen yon kat jeyografik anbrike pou pèrsonalize koulè ak icon chak eta. Pandan ke pa gen okenn lòt eta yo sipòte pa navigatè, moun ki itilize estil koutim ka fasilman ajoute fidbak fòm pi konplèks.
Tanpri sonje ke nou pa rekòmande personnalisation valè sa yo san tou modifye form-validation-statemixin la.
Fòm koutim
Pou plis personnalisation ak konsistans navigatè kwaze, sèvi ak eleman fòm konplètman koutim nou yo pou ranplase default navigatè yo. Yo bati sou tèt maketing semantik ak aksesib, kidonk yo ap ranplasman solid pou nenpòt kontwòl fòm default.
Case ak radyo
Chak kaz ak radyo <input>ak <label>appariement vlope nan yon <div>pou kreye kontwòl koutim nou an. Estriktirèl, sa a se menm apwòch ak default nou an .form-check.
Nou itilize seleksyon frè ak sè ( ~) pou tout eta nou <input>yo—tankou :checked—pou byen style endikatè fòm koutim nou an. Lè yo konbine avèk .custom-control-labelklas la, nou kapab tou style tèks la pou chak atik ki baze sou <input>eta a.
Nou kache default la <input>ak opacityepi itilize .custom-control-labelpou konstwi yon nouvo endikatè fòm koutim nan plas li ak ::beforeak ::after. Malerezman nou pa ka bati yon koutim yon sèl soti nan jis <input>paske CSS a contentpa travay sou eleman sa a.
Nan eta yo tcheke, nou itilize ikon base64 entegre SVG soti nan Open Iconic . Sa a bay nou pi bon kontwòl pou manier ak pwezante atravè navigatè ak aparèy.
Bwat chèk
Bwat chèk koutim yo ka itilize :indeterminatepseudo klas la tou lè yo mete manyèlman atravè JavaScript (pa gen okenn atribi HTML ki disponib pou espesifye li).
Si w ap itilize jQuery, yon bagay tankou sa a ta dwe sifi:
Radyo
Nan liy
Andikape
Bwat ak radyo koutim yo kapab tou enfim. Ajoute disabledatribi boolean nan <input>ak endikatè a koutim ak deskripsyon etikèt yo pral otomatikman style.
Chanjman
Yon switch gen maketing yon kaz koutim men li sèvi ak .custom-switchklas la pou rann yon switch baskile. Bouton tou sipòte disabledatribi a.
Chwazi meni an
<select>Meni koutim bezwen sèlman yon klas koutim, .custom-selectpou deklanche estil koutim yo. Styles koutim yo limite <select>a aparans inisyal la epi yo pa ka modifye <option>yo akòz limit navigatè a.
Ou ka chwazi tou nan ti ak gwo seleksyon koutim pou matche ak antre tèks menm gwosè nou yo.
Se multipleatribi a sipòte tou:
Kòm se sizeatribi a:
Range
<input type="range">Kreye kontwòl koutim ak .custom-range. Tras la (aryè plan) ak gwo pous (valè a) yo tou de style yo parèt menm jan an atravè navigatè yo. Kòm sèlman IE ak Firefox sipòte "ranpli" tras yo soti nan goch la oswa dwa nan gwo pous la kòm yon mwayen pou endike pwogrè vizyèlman, nou pa sipòte li kounye a.
Antre ranje gen valè implicite pou minak max— 0ak 100, respektivman. Ou ka presize nouvo valè pou moun ki sèvi minak maxatribi yo ak.
Pa default, ranje antre "menen" nan valè nonb antye relatif. Pou chanje sa a, ou ka presize yon stepvalè. Nan egzanp ki anba a, nou double kantite etap lè nou itilize step="0.5".
File navigatè
Plugin a rekòmande pou anime opinyon dosye koutim: bs-custom-file-input , se sa n ap itilize kounye a isit la nan dokiman nou yo.
Fichye a antre se pi gnarly nan pakèt la epi li mande JavaScript adisyonèl si ou ta renmen branche yo ak fonksyonèl Chwazi fichye ... ak chwazi tèks non dosye.
Nou kache fichye default la <input>atravè opacityepi olye de style la <label>. Se bouton an pwodwi ak pozisyone ak ::after. Anfen, nou deklare yon widthak heightsou la <input>pou espas apwopriye pou kontni ki antoure.
Tradiksyon oswa personnalisation fisèl yo ak SCSS
Yo itilize :lang()pseudo-klas la pou pèmèt tradiksyon tèks "Browse" nan lòt lang. Ranplase oswa ajoute antre nan $custom-file-textvaryab Sass la ak tag langaj ki enpòtan ak kòd lokalize. Fisèl angle yo ka Customized menm jan an. Pou egzanp, men ki jan yon moun ta ka ajoute yon tradiksyon Panyòl (kòd lang Panyòl la se es):
Men an lang(es)aksyon sou antre nan dosye koutim pou yon tradiksyon Panyòl:
Ou pral bezwen fikse lang dokiman ou a (oswa sous-arbre ladan l) kòrèkteman pou yo ka montre tèks ki kòrèk la. Sa a ka fè lè l sèvi avèk atribi langki sou <html>eleman an oswa Content-Languageheader HTTP , pami lòt metòd.
Tradiksyon oswa personnalisation fisèl yo ak HTML
Bootstrap bay tou yon fason pou tradui tèks "Browse" an HTML ak data-browseatribi ki ka ajoute sou etikèt opinyon koutim lan (egzanp nan Olandè):