Theming Bootstrap
I-customize ang Bootstrap 4 gamit ang aming bagong built-in na Sass variable para sa mga global na kagustuhan sa istilo para sa madaling pagbabago sa tema at bahagi.
Panimula
Sa Bootstrap 3, ang theming ay higit na hinihimok ng mga variable na override sa LESS, custom na CSS, at isang hiwalay na stylesheet ng tema na isinama namin sa aming dist
mga file. Sa ilang pagsisikap, ganap na muling idisenyo ng isa ang hitsura ng Bootstrap 3 nang hindi hinahawakan ang mga pangunahing file. Ang Bootstrap 4 ay nagbibigay ng isang pamilyar, ngunit bahagyang naiibang diskarte.
Ngayon, ang theming ay nagagawa ng mga Sass variable, Sass na mapa, at custom na CSS. Wala nang nakatutok na stylesheet ng tema; sa halip, maaari mong paganahin ang built-in na tema upang magdagdag ng mga gradient, anino, at higit pa.
Sass
Gamitin ang aming source na Sass file para samantalahin ang mga variable, mapa, mixin, at higit pa. Sa aming build, tinaasan namin ang Sass rounding precision sa 6 (bilang default ay 5 ito) para maiwasan ang mga isyu sa browser rounding.
Istraktura ng file
Hangga't maaari, iwasang baguhin ang mga pangunahing file ng Bootstrap. Para sa Sass, nangangahulugan iyon ng paggawa ng sarili mong stylesheet na nag-i-import ng Bootstrap para mabago at ma-extend mo ito. Ipagpalagay na gumagamit ka ng manager ng package tulad ng npm, magkakaroon ka ng istraktura ng file na ganito ang hitsura:
Kung na-download mo ang aming mga source file at hindi gumagamit ng package manager, gugustuhin mong manu-manong mag-setup ng isang bagay na katulad ng structure na iyon, na pinapanatili ang mga source file ng Bootstrap na hiwalay sa iyong sarili.
Ini-import
Sa iyong custom.scss
, mag-i-import ka ng pinagmulang Sass file ng Bootstrap. Mayroon kang dalawang pagpipilian: isama ang lahat ng Bootstrap, o piliin ang mga bahagi na kailangan mo. Hinihikayat namin ang huli, kahit na magkaroon ng kamalayan na mayroong ilang mga kinakailangan at dependency sa aming mga bahagi. Kakailanganin mo ring magsama ng ilang JavaScript para sa aming mga plugin.
Kapag nakalagay ang setup na iyon, maaari mong simulan na baguhin ang alinman sa mga variable at mapa ng Sass sa iyong custom.scss
. Maaari ka ring magsimulang magdagdag ng mga bahagi ng Bootstrap sa ilalim ng // Optional
seksyon kung kinakailangan. Iminumungkahi namin ang paggamit ng buong stack ng pag-import mula sa aming bootstrap.scss
file bilang iyong panimulang punto.
Mga default ng variable
Kasama sa bawat Sass variable sa Bootstrap 4 ang !default
flag na nagbibigay-daan sa iyong i-override ang default na value ng variable sa sarili mong Sass nang hindi binabago ang source code ng Bootstrap. Kopyahin at i-paste ang mga variable kung kinakailangan, baguhin ang kanilang mga halaga, at alisin ang !default
flag. Kung naitalaga na ang isang variable, hindi na ito muling itatalaga ng mga default na value sa Bootstrap.
Makikita mo ang kumpletong listahan ng mga variable ng Bootstrap sa scss/_variables.scss
. Nakatakda ang ilang variable sa null
, hindi ilalabas ng mga variable na ito ang property maliban na lang kung ma-override ang mga ito sa iyong configuration.
Maaaring dumating ang mga override ng variable sa loob ng parehong Sass file bago o pagkatapos ng mga default na variable. Gayunpaman, kapag nag-o-override sa mga Sass file, dapat na dumating ang iyong mga override bago ka mag-import ng Sass file ng Bootstrap.
Narito ang isang halimbawa na nagbabago sa background-color
at color
para sa <body>
kapag ini-import at kino-compile ang Bootstrap sa pamamagitan ng npm:
Ulitin kung kinakailangan para sa anumang variable sa Bootstrap, kasama ang mga pandaigdigang opsyon sa ibaba.
Mga mapa at mga loop
Kasama sa Bootstrap 4 ang ilang mga mapa ng Sass, mga pares ng pangunahing halaga na nagpapadali sa pagbuo ng mga pamilya ng nauugnay na CSS. Gumagamit kami ng mga mapa ng Sass para sa aming mga kulay, mga breakpoint ng grid, at higit pa. Katulad ng mga variable ng Sass, kasama sa lahat ng mapa ng Sass ang !default
flag at maaaring i-override at palawigin.
Ang ilan sa aming mga mapa ng Sass ay pinagsama sa mga walang laman bilang default. Ginagawa ito upang bigyang-daan ang madaling pagpapalawak ng isang ibinigay na mapa ng Sass, ngunit ito ay may halaga na gawing mas mahirap ang pag- alis ng mga item mula sa isang mapa.
Baguhin ang mapa
Upang baguhin ang isang umiiral na kulay sa aming $theme-colors
mapa, idagdag ang sumusunod sa iyong custom na Sass file:
Idagdag sa mapa
Upang magdagdag ng bagong kulay sa $theme-colors
, idagdag ang bagong key at value:
Alisin sa mapa
Upang alisin ang mga kulay mula sa $theme-colors
, o anumang iba pang mapa, gamitin ang map-remove
. Magkaroon ng kamalayan na dapat mong ipasok ito sa pagitan ng aming mga kinakailangan at mga opsyon:
Mga kinakailangang susi
Ipinapalagay ng Bootstrap ang pagkakaroon ng ilang partikular na susi sa loob ng mga mapa ng Sass habang kami mismo ang gumagamit at nagpapalawak ng mga ito. Habang kino-customize mo ang mga kasamang mapa, maaari kang makatagpo ng mga error kung saan ginagamit ang isang partikular na key ng Sass map.
Halimbawa, ginagamit namin ang primary
, success
, at mga danger
key mula $theme-colors
sa para sa mga link, button, at form states. Ang pagpapalit sa mga value ng mga key na ito ay hindi dapat magpakita ng mga isyu, ngunit ang pag-alis sa mga ito ay maaaring magdulot ng mga isyu sa Sass compilation. Sa mga pagkakataong ito, kakailanganin mong baguhin ang Sass code na gumagamit ng mga value na iyon.
Mga pag-andar
Gumagamit ang Bootstrap ng ilang function ng Sass, ngunit isang subset lang ang naaangkop sa pangkalahatang theming. Nagsama kami ng tatlong function para sa pagkuha ng mga value mula sa mga color map:
Nagbibigay-daan sa iyo ang mga ito na pumili ng isang kulay mula sa isang Sass na mapa katulad ng kung paano mo gagamitin ang isang variable ng kulay mula sa v3.
Mayroon din kaming isa pang function para sa pagkuha ng partikular na antas ng kulay mula sa $theme-colors
mapa. Ang mga halaga ng negatibong antas ay magpapagaan ng kulay, habang ang mas mataas na antas ay magpapadilim.
Sa pagsasagawa, tatawagan mo ang function at ipapasa sa dalawang parameter: ang pangalan ng kulay mula sa $theme-colors
(hal., pangunahin o panganib) at isang numeric na antas.
Maaaring magdagdag ng mga karagdagang function sa hinaharap o ang iyong sariling custom na Sass upang lumikha ng mga level function para sa karagdagang mga mapa ng Sass, o kahit isang generic kung gusto mong maging mas verbose.
Contrast ng kulay
Ang isang karagdagang function na kasama namin sa Bootstrap ay ang color contrast function, color-yiq
. Ginagamit nito ang puwang ng kulay ng YIQ upang awtomatikong magbalik ng liwanag ( #fff
) o madilim ( #111
) na contrast na kulay batay sa tinukoy na kulay ng base. Ang function na ito ay lalong kapaki-pakinabang para sa mga mixin o loop kung saan ka bumubuo ng maraming klase.
Halimbawa, upang makabuo ng mga color swatch mula sa aming $theme-colors
mapa:
Maaari rin itong gamitin para sa isang beses na pangangailangan sa kaibahan:
Maaari ka ring tumukoy ng base na kulay sa aming mga function ng color map:
Mga pagpipilian sa Sass
I-customize ang Bootstrap 4 gamit ang aming built-in na custom na mga variable na file at madaling i-toggle ang mga global na kagustuhan sa CSS gamit ang mga bagong $enable-*
Sass variable. I-override ang value ng isang variable at muling i-compile kung npm run test
kinakailangan.
Maaari mong mahanap at i-customize ang mga variable na ito para sa mga pangunahing pandaigdigang opsyon sa scss/_variables.scss
file ng Bootstrap.
Variable | Mga halaga | Paglalarawan |
---|---|---|
$spacer |
1rem (default), o anumang halaga > 0 |
Tinutukoy ang default na halaga ng spacer upang mabuo ng programmatically ang aming mga spacer utilities . |
$enable-rounded |
true (default) ofalse |
Pinapagana ang mga paunang natukoy na border-radius istilo sa iba't ibang bahagi. |
$enable-shadows |
true o false (default) |
Pinapagana ang mga paunang natukoy na box-shadow istilo sa iba't ibang bahagi. |
$enable-gradients |
true o false (default) |
Pinapagana ang mga paunang natukoy na gradient sa pamamagitan ng mga background-image istilo sa iba't ibang bahagi. |
$enable-transitions |
true (default) ofalse |
Pinapagana ang paunang natukoy na transition s sa iba't ibang bahagi. |
$enable-prefers-reduced-motion-media-query |
true (default) ofalse |
Pinapagana ang prefers-reduced-motion media query , na pinipigilan ang ilang mga animation/transition batay sa mga kagustuhan sa browser/operating system ng mga user. |
$enable-hover-media-query |
true o false (default) |
Hindi na ginagamit |
$enable-grid-classes |
true (default) ofalse |
Pinapagana ang pagbuo ng mga klase ng CSS para sa grid system (hal., .container , .row , .col-md-1 , atbp.). |
$enable-caret |
true (default) ofalse |
Pinapagana ang pseudo element caret sa .dropdown-toggle . |
$enable-pointer-cursor-for-buttons |
true (default) ofalse |
Magdagdag ng "kamay" na cursor sa mga hindi pinaganang elemento ng button. |
$enable-print-styles |
true (default) ofalse |
Pinapagana ang mga istilo para sa pag-optimize ng pag-print. |
$enable-responsive-font-sizes |
true o false (default) |
Pinapagana ang mga tumutugong laki ng font . |
$enable-validation-icons |
true (default) ofalse |
Pinapagana background-image ang mga icon sa loob ng textual input at ilang custom na form para sa validation states. |
$enable-deprecation-messages |
true o false (default) |
Itakda sa true upang magpakita ng mga babala kapag gumagamit ng alinman sa mga hindi na ginagamit na mixin at function na binalak na alisin sa v5 . |
Kulay
Marami sa iba't ibang bahagi at utility ng Bootstrap ay binuo sa pamamagitan ng isang serye ng mga kulay na tinukoy sa isang mapa ng Sass. Maaaring i-loop ang mapang ito sa Sass upang mabilis na makabuo ng isang serye ng mga ruleset.
Lahat ng mga kulay
Lahat ng mga kulay na available sa Bootstrap 4, ay available bilang Sass variable at isang Sass map sa scss/_variables.scss
file. Palalawakin ito sa mga susunod na menor de edad na release para magdagdag ng mga karagdagang shade, katulad ng grayscale palette na kasama na namin.
Narito kung paano mo magagamit ang mga ito sa iyong Sass:
Available din ang mga klase ng color utility para sa pagtatakda color
at background-color
.
Sa hinaharap, nilalayon naming magbigay ng mga mapa at variable ng Sass para sa mga shade ng bawat kulay tulad ng ginawa namin sa mga grayscale na kulay sa ibaba.
Mga kulay ng tema
Gumagamit kami ng isang subset ng lahat ng mga kulay upang lumikha ng isang mas maliit na paleta ng kulay para sa pagbuo ng mga scheme ng kulay, magagamit din bilang mga variable ng Sass at isang mapa ng Sass sa scss/_variables.scss
file ng Bootstraps.
Grays
Isang malawak na hanay ng mga gray na variable at isang Sass na mapa scss/_variables.scss
para sa mga pare-parehong kulay ng grey sa iyong proyekto. Tandaan na ang mga ito ay "cool greys", na may posibilidad sa banayad na asul na tono, sa halip na neutral na kulay abo.
Sa loob scss/_variables.scss
ng , makikita mo ang mga variable ng kulay ng Bootstrap at mapa ng Sass. Narito ang isang halimbawa ng $colors
mapa ng Sass:
Magdagdag, mag-alis, o magbago ng mga halaga sa loob ng mapa upang i-update kung paano ginagamit ang mga ito sa maraming iba pang bahagi. Sa kasamaang palad sa oras na ito, hindi lahat ng bahagi ay gumagamit ng mapa ng Sass na ito. Ang mga update sa hinaharap ay magsusumikap na mapabuti ito. Hanggang sa panahong iyon, magplano sa paggamit ng mga ${color}
variable at ang mapa ng Sass na ito.
Mga bahagi
Marami sa mga bahagi at utility ng Bootstrap ay binuo gamit ang mga @each
loop na umuulit sa isang mapa ng Sass. Ito ay partikular na nakakatulong para sa pagbuo ng mga variant ng isang bahagi sa pamamagitan ng aming $theme-colors
at paggawa ng mga tumutugong variant para sa bawat breakpoint. Habang kino-customize mo ang mga mapa ng Sass na ito at muling nag-compile, awtomatiko mong makikita ang iyong mga pagbabago na makikita sa mga loop na ito.
Mga modifier
Marami sa mga bahagi ng Bootstrap ay binuo gamit ang base-modifier class approach. Nangangahulugan ito na ang karamihan ng estilo ay nakapaloob sa isang batayang klase (hal, .btn
) habang ang mga pagkakaiba-iba ng istilo ay nakakulong sa mga klase ng modifier (hal, .btn-danger
). Ang mga modifier class na ito ay binuo mula sa $theme-colors
mapa para gawing customizing ang numero at pangalan ng aming modifier classes.
Narito ang dalawang halimbawa kung paano kami umiikot sa $theme-colors
mapa upang bumuo ng mga modifier sa .alert
bahagi at sa lahat ng aming mga .bg-*
kagamitan sa background.
Tumutugon
Ang mga Sass loop na ito ay hindi limitado sa mga mapa ng kulay, alinman. Maaari ka ring bumuo ng mga tumutugong variation ng iyong mga bahagi o utility. Kunin halimbawa ang aming tumutugon na text alignment utilities kung saan pinaghalo namin ang isang @each
loop para sa $grid-breakpoints
Sass map na may kasamang media query.
Kung kailangan mong baguhin ang iyong $grid-breakpoints
, malalapat ang iyong mga pagbabago sa lahat ng mga loop na umuulit sa mapa na iyon.
Mga variable ng CSS
Kasama sa Bootstrap 4 ang humigit-kumulang dalawang dosenang CSS custom na katangian (mga variable) sa pinagsama-samang CSS nito. Nagbibigay ang mga ito ng madaling pag-access sa mga karaniwang ginagamit na halaga tulad ng aming mga kulay ng tema, breakpoint, at pangunahing font stack kapag nagtatrabaho sa Inspector ng iyong browser, isang code sandbox, o pangkalahatang prototyping.
Magagamit na mga variable
Narito ang mga variable na aming kasama (tandaan na ang :root
ay kinakailangan). Ang mga ito ay matatagpuan sa aming _root.scss
file.
Mga halimbawa
Nag-aalok ang mga variable ng CSS ng katulad na kakayahang umangkop sa mga variable ni Sass, ngunit hindi nangangailangan ng compilation bago ihatid sa browser. Halimbawa, dito nire-reset namin ang font ng aming page at mga istilo ng link na may mga variable ng CSS.
Mga variable ng breakpoint
Bagama't orihinal naming isinama ang mga breakpoint sa aming mga variable ng CSS (hal, --breakpoint-md
), hindi sinusuportahan ang mga ito sa mga query sa media , ngunit magagamit pa rin ang mga ito sa loob ng mga ruleset sa mga query sa media. Ang mga breakpoint variable na ito ay nananatili sa pinagsama-samang CSS para sa pabalik na compatibility dahil magagamit sila ng JavaScript. Matuto pa sa spec .
Narito ang isang halimbawa ng kung ano ang hindi suportado:
At narito ang isang halimbawa ng kung ano ang sinusuportahan: