Theming Bootstrap
Pèsonalize Bootstrap 4 ak nouvo varyab Sass entegre nou an pou preferans style mondyal pou tèm ak chanjman konpozan fasil.
Entwodiksyon
Nan Bootstrap 3, tematik te lajman kondwi pa ranplasman varyab nan LESS, CSS koutim, ak yon fèy style tèm separe ke nou enkli nan dist
dosye nou yo. Avèk kèk efò, yon moun ka konplètman redesign gade nan Bootstrap 3 san yo pa manyen dosye debaz yo. Bootstrap 4 bay yon apwòch abitye, men yon ti kras diferan.
Koulye a, tèm yo akonpli pa varyab Sass, kat Sass, ak CSS koutim. Pa gen plis dedye stylesheet tèm; olye de sa, ou ka pèmèt tèm nan bati-an ajoute gradyan, lonbraj, ak plis ankò.
Sass
Sèvi ak dosye sous Sass nou yo pou pwofite varyab, kat, mixin, ak plis ankò. Nan bati nou an, nou te ogmante presizyon awondi Sass a 6 (pa default li se 5) pou anpeche pwoblèm ak awondi navigatè.
Estrikti dosye
Chak fwa sa posib, evite modifye dosye debaz Bootstrap yo. Pou Sass, sa vle di kreye pwòp stylesheet ou ki enpòte Bootstrap pou ou ka modifye ak pwolonje li. Si w ap itilize yon manadjè pake tankou npm, w ap gen yon estrikti dosye ki sanble sa a:
Si w te telechaje fichye sous nou yo epi w pa sèvi ak yon manadjè pake, w ap vle konfigirasyon manyèlman yon bagay ki sanble ak estrikti sa a, kenbe dosye sous Bootstrap yo separe de pwòp ou yo.
Enpòte
Nan custom.scss
, ou pral enpòte dosye Sass sous Bootstrap yo. Ou gen de opsyon: enkli tout Bootstrap, oswa chwazi pati ou bezwen yo. Nou ankouraje lèt la, menm si ou dwe konnen gen kèk kondisyon ak depandans atravè eleman nou yo. W ap bezwen tou mete kèk JavaScript pou grefon nou yo.
Avèk konfigirasyon sa a an plas, ou ka kòmanse modifye nenpòt nan varyab Sass yo ak kat nan custom.scss
. Ou kapab tou kòmanse ajoute pati nan Bootstrap anba // Optional
seksyon an jan sa nesesè. Nou sijere pou w sèvi ak pil enpòte plen nan bootstrap.scss
dosye nou an kòm pwen depa w.
Defo varyab
Chak varyab Sass nan Bootstrap 4 gen ladan !default
drapo a ki pèmèt ou pase sou valè default varyab la nan pwòp Sass ou san yo pa modifye kòd sous Bootstrap la. Kopi epi kole varyab yo jan sa nesesè, modifye valè yo, epi retire !default
drapo a. Si yon varyab deja te asiyen, Lè sa a, li pa pral re-asiyen pa valè yo default nan Bootstrap.
W ap jwenn lis konplè varyab Bootstrap yo nan scss/_variables.scss
. Gen kèk varyab yo mete sou null
, varyab sa yo pa bay pwopriyete a sof si yo pase sou plas nan konfigirasyon ou a.
Chanjman varyab nan menm dosye Sass la ka vini anvan oswa apre varyab default yo. Sepandan, lè w pase sou pye sou dosye Sass yo, yo dwe pase ranvwa ou yo anvan ou enpòte dosye Sass Bootstrap yo.
Men yon egzanp ki chanje background-color
ak color
pou <body>
lè enpòte ak konpile Bootstrap atravè npm:
Repete jan sa nesesè pou nenpòt varyab nan Bootstrap, ki gen ladan opsyon mondyal ki anba a.
Kat ak bouk
Bootstrap 4 gen ladan yon ti ponyen kat Sass, pè valè kle ki fè li pi fasil pou jenere fanmi CSS ki gen rapò. Nou itilize kat Sass pou koulè nou yo, pwen kadriyaj, ak plis ankò. Menm jan ak varyab Sass, tout kat Sass yo gen ladan !default
drapo a epi yo ka depase ak pwolonje.
Kèk nan kat Sass nou yo fizyone nan kat vid pa default. Sa a se fè pou pèmèt ekspansyon fasil nan yon kat Sass bay yo, men li vini nan pri pou fè retire atik nan yon kat jeyografik yon ti kras pi difisil.
Modifye kat jeyografik la
Pou modifye yon koulè ki deja egziste nan $theme-colors
kat jeyografik nou an, ajoute sa ki annapre yo nan dosye Sass koutim ou a:
Ajoute sou kat la
Pou ajoute yon nouvo koulè nan $theme-colors
, ajoute nouvo kle a ak valè:
Retire nan kat jeyografik la
Pou retire koulè nan $theme-colors
, oswa nenpòt lòt kat, itilize map-remove
. Ou dwe mete li ant kondisyon nou yo ak opsyon nou yo:
Kle obligatwa
Bootstrap sipoze prezans kèk kle espesifik nan kat Sass jan nou itilize ak pwolonje sa yo tèt nou. Pandan w ap pèrsonalize kat yo enkli, ou ka rankontre erè kote yo te itilize yon kle kat Sass espesifik.
Pou egzanp, nou itilize primary
, success
, ak danger
kle soti nan $theme-colors
pou lyen, bouton, ak eta fòm yo. Ranplase valè kle sa yo pa ta dwe prezante okenn pwoblèm, men retire yo ka lakòz pwoblèm konpilasyon Sass. Nan ka sa yo, w ap bezwen modifye kòd Sass ki sèvi ak valè sa yo.
Fonksyon
Bootstrap itilize plizyè fonksyon Sass, men se sèlman yon ti gwoup ki aplikab pou tèm jeneral. Nou te enkli twa fonksyon pou jwenn valè nan kat koulè yo:
Sa yo pèmèt ou chwazi yon koulè nan yon kat Sass anpil tankou jan ou ta itilize yon varyab koulè soti nan v3.
Nou gen tou yon lòt fonksyon pou jwenn yon nivo patikilye nan koulè nan $theme-colors
kat la. Valè nivo negatif yo pral aleje koulè a, pandan y ap nivo ki pi wo yo pral fè nwa.
Nan pratik, ou ta rele fonksyon an epi pase nan de paramèt: non an nan koulè a soti nan $theme-colors
(egzanp, prensipal oswa danje) ak yon nivo nimerik.
Fonksyon adisyonèl yo ta ka ajoute nan lavni an oswa pwòp Sass koutim ou a pou kreye fonksyon nivo pou kat Sass adisyonèl, oswa menm yon sèl jenerik si ou te vle gen plis detay.
Kontras koulè
Yon lòt fonksyon nou enkli nan Bootstrap se fonksyon kontras koulè a, color-yiq
. Li itilize espas koulè YIQ pou otomatikman retounen yon koulè kontras limyè ( #fff
) oswa nwa ( #111
) ki baze sou koulè baz espesifye a. Fonksyon sa a itil espesyalman pou mixin oswa bouk kote w ap jenere plizyè klas.
Pou egzanp, jenere echantiyon koulè nan $theme-colors
kat nou an:
Li kapab tou itilize pou bezwen kontras yon sèl:
Ou kapab tou presize yon koulè baz ak fonksyon kat koulè nou yo:
Chape anba SVG
Nou itilize escape-svg
fonksyon an pou chape anba <
, >
ak #
karaktè pou imaj background SVG. Karaktè sa yo bezwen chape pou byen rann imaj yo background nan IE.
Add ak Soustraksyon fonksyon
Nou itilize fonksyon yo add
ak subtract
pou vlope fonksyon CSS calc
la. Objektif prensipal fonksyon sa yo se pou evite erè lè 0
yo pase yon valè "unitless" nan yon calc
ekspresyon. Ekspresyon tankou calc(10px - 0)
ap retounen yon erè nan tout navigatè, malgre yo matematik kòrèk.
Egzanp kote kalkil la valab:
Egzanp kote kalkil la pa valab:
Opsyon Sass
Pèsonalize Bootstrap 4 ak dosye varyab koutim entegre nou an epi byen fasil chanje preferans CSS mondyal ak nouvo $enable-*
varyab Sass. Pase sou valè yon varyab epi rekonpile ak npm run test
jan sa nesesè.
Ou ka jwenn ak Customize varyab sa yo pou opsyon mondyal kle nan scss/_variables.scss
dosye Bootstrap la.
Varyab | Valè | Deskripsyon |
---|---|---|
$spacer |
1rem (default), oswa nenpòt ki valè > 0 |
Espesifye valè spacer default pou jenere sèvis piblik spacer nou yo . |
$enable-rounded |
true (default) oswafalse |
Pèmèt border-radius estil predefini sou divès eleman. |
$enable-shadows |
true oswa false (default) |
Pèmèt box-shadow estil predefini sou divès eleman. |
$enable-gradients |
true oswa false (default) |
Pèmèt gradyan predefini atravè background-image estil sou divès eleman. |
$enable-transitions |
true (default) oswafalse |
Pèmèt s predefini transition sou divès konpozan. |
$enable-prefers-reduced-motion-media-query |
true (default) oswafalse |
Pèmèt prefers-reduced-motion rechèch medya a , ki siprime sèten animasyon/tranzisyon ki baze sou preferans navigatè itilizatè yo/sistèm operasyon yo. |
$enable-hover-media-query |
true oswa false (default) |
Depreche |
$enable-grid-classes |
true (default) oswafalse |
Pèmèt jenerasyon klas CSS pou sistèm kadriyaj la (egzanp, .container , .row , .col-md-1 , elatriye). |
$enable-caret |
true (default) oswafalse |
Pèmèt pseudo eleman caret sou .dropdown-toggle . |
$enable-pointer-cursor-for-buttons |
true (default) oswafalse |
Ajoute "men" kurseur nan eleman bouton ki pa andikape. |
$enable-print-styles |
true (default) oswafalse |
Pèmèt estil pou optimize enprime. |
$enable-responsive-font-sizes |
true oswa false (default) |
Pèmèt gwosè polis reponn . |
$enable-validation-icons |
true (default) oswafalse |
Pèmèt background-image ikon nan entrain tèks ak kèk fòm koutim pou eta validation. |
$enable-deprecation-messages |
true oswa false (default) |
Mete sou true pou montre avètisman lè w ap itilize nenpòt nan mixin demode ak fonksyon ke yo planifye pou retire nan v5 . |
Koulè
Anpil nan divès konpozan ak sèvis piblik Bootstrap yo bati atravè yon seri koulè defini nan yon kat Sass. Kat sa a ka boukle sou nan Sass rapidman jenere yon seri règ.
Tout koulè
Tout koulè ki disponib nan Bootstrap 4, yo disponib kòm varyab Sass ak yon kat Sass nan scss/_variables.scss
dosye. Sa a pral elaji sou degaje minè ki vin apre yo ajoute tout koulè adisyonèl, anpil tankou palèt nan gri nou deja enkli.
Men ki jan ou ka itilize sa yo nan Sass ou a:
Koulè itilite klas yo disponib tou pou mete color
ak background-color
.
Nan tan kap vini an, nou pral vize bay kat Sass ak varyab pou tout koulè nan chak koulè jan nou te fè ak koulè gri ki anba a.
Koulè tèm
Nou itilize yon sou-ansanm tout koulè pou kreye yon palèt koulè ki pi piti pou jenere plan koulè, ki disponib tou kòm varyab Sass ak yon kat Sass nan scss/_variables.scss
dosye Bootstrap la.
Gri
Yon seri gwo varyab gri ak yon kat Sass nan scss/_variables.scss
pou tout koulè gri ki konsistan atravè pwojè ou a. Remake byen ke sa yo se "gri fre", ki gen tandans nan direksyon pou yon ton ble sibtil, olye ke gri net.
Nan scss/_variables.scss
, w ap jwenn varyab koulè Bootstrap ak kat Sass. Men yon egzanp $colors
kat Sass la:
Ajoute, retire oswa modifye valè nan kat la pou mete ajou fason yo itilize yo nan anpil lòt konpozan. Malerezman nan moman sa a, se pa tout eleman ki itilize kat Sass sa a. Mizajou nan lavni yo pral fè efò pou amelyore sa a. Jiska lè sa a, planifye pou sèvi ak ${color}
varyab yo ak kat Sass sa a.
Eleman
Anpil nan eleman ak sèvis piblik Bootstrap yo bati ak @each
bouk ki repete sou yon kat Sass. Sa a itil espesyalman pou jenere variantes nan yon eleman pa nou yo $theme-colors
ak kreye varyant reponn pou chak breakpoint. Pandan w ap pèrsonalize kat Sass sa yo epi w ap rekonpile, w ap otomatikman wè chanjman w yo reflete nan bouk sa yo.
Modifikatè
Anpil nan eleman Bootstrap yo bati ak yon apwòch klas baz modifikatè. Sa vle di ke gwo stil la genyen nan yon klas de baz (eg, .btn
) pandan ke varyasyon style yo limite nan klas modifye (eg, .btn-danger
). Klas modifikatè sa yo bati nan $theme-colors
kat jeyografik la pou fè pèsonalizasyon nimewo ak non klas modifikatè nou yo.
Isit la yo se de egzanp sou fason nou bouk sou $theme-colors
kat jeyografik la jenere modifikatè nan .alert
eleman an ak tout .bg-*
sèvis piblik background nou yo.
Reponn
Sa yo bouk Sass yo pa limite a kat koulè, swa. Ou kapab tou jenere varyasyon reponn nan eleman ou oswa sèvis piblik yo. Pran pou egzanp sèvis piblik aliyman tèks reponn kote nou melanje yon @each
bouk pou $grid-breakpoints
kat jeyografik Sass la ak yon rechèch medya enkli.
Si w ta bezwen modifye $grid-breakpoints
, chanjman ou yo pral aplike nan tout bouk yo ap repete sou kat sa a.
CSS varyab
Bootstrap 4 gen ladan anviwon de douzèn pwopriyete koutim CSS (varyab) nan CSS konpile li yo. Sa yo bay aksè fasil nan valè yo souvan itilize tankou koulè tèm nou yo, pwen breakpoints, ak pil font prensipal lè w ap travay nan Enspektè navigatè w la, yon sandbox kòd, oswa pwototip jeneral.
Varyab ki disponib
Isit la yo se varyab yo nou enkli (note ke :root
se obligatwa). Yo sitiye nan _root.scss
dosye nou an.
Egzanp yo
Varyab CSS yo ofri menm jan fleksibilite ak varyab Sass yo, men san yo pa bezwen konpilasyon anvan yo sèvi nan navigatè a. Pou egzanp, isit la nou ap reset font paj nou an ak estil lyen ak varyab CSS.
Varyab Breakpoint
Byenke nou te okòmansman enkli pwen rupture nan varyab CSS nou yo (egzanp, --breakpoint-md
), sa yo pa sipòte nan rekèt medya yo , men yo ka toujou itilize nan seri règ nan rekèt medya yo. Varyab pwen sa yo rete nan CSS konpile a pou konpatibilite bak, paske yo ka itilize pa JavaScript. Aprann plis nan spesifikasyon an .
Men yon egzanp sou sa ki pa sipòte:
Ak isit la se yon egzanp sou sa ki sipòte: