Theming Bootstrap
Prilagodite Bootstrap 4 s našim novim ugrađenim Sass varijablama za globalne preferencije stila za laku promjenu tema i komponenti.
U Bootstrapu 3, tematiziranje je uglavnom bilo vođeno zamjenama varijabli u LESS-u, prilagođenim CSS-om i zasebnom tablicom stilova teme koju smo uključili u naše dist
datoteke. Uz malo truda, moglo bi se u potpunosti redizajnirati izgled Bootstrapa 3 bez dodirivanja osnovnih datoteka. Bootstrap 4 pruža poznat, ali malo drugačiji pristup.
Sada se teme postižu pomoću Sass varijabli, Sass mapa i prilagođenog CSS-a. Nema više posvećene tematske tablice stilova; umjesto toga, možete omogućiti ugrađenu temu da dodate gradijente, sjene i još mnogo toga.
Iskoristite naše izvorne Sass datoteke da iskoristite prednosti varijabli, mapa, miksa i još mnogo toga.
Kad god je moguće, izbjegavajte modificiranje osnovnih datoteka Bootstrapa. Za Sass, to znači kreiranje vlastite tablice stilova koja uvozi Bootstrap tako da ga možete modificirati i proširiti. Pod pretpostavkom da koristite upravitelj paketa kao što je npm, imat ćete strukturu datoteke koja izgleda ovako:
Ako ste preuzeli naše izvorne datoteke i ne koristite upravitelj paketa, poželjet ćete ručno postaviti nešto slično toj strukturi, držeći izvorne datoteke Bootstrapa odvojene od vaših.
U vaš custom.scss
, uvest ćete izvorne Sass datoteke Bootstrapa. Imate dvije opcije: uključite cijeli Bootstrap ili odaberite dijelove koji su vam potrebni. Podstičemo ovo drugo, iako imajte na umu da postoje neki zahtjevi i ovisnosti među našim komponentama. Također ćete morati uključiti neki JavaScript za naše dodatke.
S tim podešavanjem možete početi mijenjati bilo koju od Sass varijabli i mapa u vašem custom.scss
. Također možete početi da dodajete dijelove Bootstrapa ispod // Optional
odjeljka po potrebi. Predlažemo da koristite kompletan stog uvoza iz naše bootstrap.scss
datoteke kao početnu tačku.
Svaka Sass varijabla u Bootstrapu 4 uključuje !default
oznaku koja vam omogućava da nadjačate zadanu vrijednost varijable u svom vlastitom Sass-u bez modifikacije izvornog koda Bootstrapa. Kopirajte i zalijepite varijable po potrebi, izmijenite njihove vrijednosti i uklonite !default
oznaku. Ako je varijabla već dodijeljena, neće biti ponovo dodijeljena prema zadanim vrijednostima u Bootstrapu.
Zaobilaženja varijable unutar iste Sass datoteke mogu doći prije ili iza zadanih varijabli. Međutim, kada se nadjačavaju Sass fajlovi, vaša nadjačavanja moraju doći prije nego uvezete Bootstrap-ove Sass datoteke.
Evo primjera koji mijenja background-color
i color
za <body>
pri uvozu i kompajliranju Bootstrapa putem npm-a:
Ponovite po potrebi za bilo koju varijablu u Bootstrapu, uključujući globalne opcije ispod.
Bootstrap 4 uključuje pregršt Sass mapa, parova ključnih vrijednosti koji olakšavaju generiranje porodica povezanih CSS-a. Koristimo Sass mape za naše boje, tačke prekida mreže i još mnogo toga. Baš kao i Sass varijable, sve Sass mape uključuju !default
zastavu i mogu se nadjačati i proširiti.
Neke od naših Sass mapa su standardno spojene u prazne. Ovo je učinjeno kako bi se omogućilo jednostavno proširenje date Sass mape, ali dolazi po cijenu da uklanjanje stavki sa mape bude malo teže.
Da biste izmijenili postojeću boju na našoj $theme-colors
mapi, dodajte sljedeće u svoju prilagođenu Sass datoteku:
Da dodate novu boju u $theme-colors
, dodajte novi ključ i vrijednost:
Za uklanjanje boja sa $theme-colors
, ili bilo koje druge karte, koristite map-remove
:
Bootstrap pretpostavlja prisustvo nekih specifičnih ključeva unutar Sass mapa jer smo ih sami koristili i proširivali. Dok prilagođavate uključene mape, možete naići na greške kada se koristi određeni ključ Sass karte.
Na primjer, koristimo primary
, success
, i danger
tipke from $theme-colors
za veze, dugmad i stanja obrasca. Zamjena vrijednosti ovih ključeva ne bi trebala predstavljati probleme, ali njihovo uklanjanje može uzrokovati probleme sa Sass kompilacijom. U ovim slučajevima, morat ćete izmijeniti Sass kod koji koristi te vrijednosti.
Bootstrap koristi nekoliko Sass funkcija, ali samo podskup je primjenjiv na opće teme. Uključili smo tri funkcije za dobivanje vrijednosti iz mapa boja:
Ovo vam omogućava da odaberete jednu boju sa Sass mape, slično kao što biste koristili varijablu boje iz v3.
Imamo i drugu funkciju za dobijanje određenog nivoa boje sa $theme-colors
mape. Negativne vrijednosti nivoa će posvijetliti boju, dok će viši nivoi potamniti.
U praksi biste pozvali funkciju i prenijeli dva parametra: naziv boje iz $theme-colors
(npr. primarna ili opasnost) i numerički nivo.
Dodatne funkcije bi se mogle dodati u budućnosti ili vaš vlastiti prilagođeni Sass za kreiranje funkcija nivoa za dodatne Sass mape, ili čak generičku ako želite da budete opširniji.
Jedna dodatna funkcija koju uključujemo u Bootstrap je funkcija kontrasta boja, color-yiq
. Koristi YIQ prostor boja da automatski vrati svijetlu ( #fff
) ili tamnu ( #111
) kontrastnu boju na osnovu specificirane osnovne boje. Ova funkcija je posebno korisna za miksine ili petlje gdje generišete više klasa.
Na primjer, za generiranje uzoraka boja s naše $theme-colors
karte:
Može se koristiti i za jednokratne potrebe za kontrastom:
Također možete odrediti osnovnu boju pomoću naših funkcija mape boja:
Prilagodite Bootstrap 4 pomoću naše ugrađene datoteke prilagođenih varijabli i lako mijenjajte globalne CSS postavke s novim $enable-*
Sass varijablama. Zaobiđite vrijednost varijable i ponovo kompajlirajte npm run test
po potrebi.
Možete pronaći i prilagoditi ove varijable za ključne globalne opcije u našoj _variables.scss
datoteci.
Varijabilna | Vrijednosti | Opis |
---|---|---|
$spacer |
1rem (zadano) ili bilo koja vrijednost > 0 |
Određuje zadanu vrijednost razmaknice za programski generiranje naših uslužnih programa za razmak . |
$enable-rounded |
true (podrazumevano) ilifalse |
Omogućava unaprijed definirane border-radius stilove na različitim komponentama. |
$enable-shadows |
true ili false (zadano) |
Omogućava unaprijed definirane box-shadow stilove na različitim komponentama. |
$enable-gradients |
true ili false (zadano) |
Omogućava unaprijed definirane gradijente putem background-image stilova na različitim komponentama. |
$enable-transitions |
true (podrazumevano) ilifalse |
Omogućava unaprijed definirane transition s na različitim komponentama. |
$enable-hover-media-query |
true ili false (zadano) |
Zastarjelo |
$enable-grid-classes |
true (podrazumevano) ilifalse |
Omogućava generiranje CSS klasa za grid sistem (npr. .container , .row , .col-md-1 , itd.). |
$enable-caret |
true (podrazumevano) ilifalse |
Omogućava pseudo element ubacivanje na .dropdown-toggle . |
$enable-print-styles |
true (podrazumevano) ilifalse |
Omogućava stilove za optimizaciju štampanja. |
Mnoge od Bootstrap-ovih različitih komponenti i uslužnih programa izgrađene su kroz niz boja definisanih u Sass mapi. Ova mapa se može premotati u Sass-u kako bi se brzo generirao niz skupova pravila.
Sve boje dostupne u Bootstrap 4, dostupne su kao Sass varijable i Sass mapa u našoj scss/_variables.scss
datoteci. Ovo će biti prošireno u narednim manjim izdanjima kako bi se dodale dodatne nijanse, slično paleti sivih tonova koju već uključujemo.
Evo kako ih možete koristiti u svom Sass-u:
Korisne klase boja su također dostupne za postavljanje color
i background-color
.
U budućnosti ćemo nastojati da pružimo Sass mape i varijable za nijanse svake boje kao što smo uradili sa bojama sivih tonova ispod.
Koristimo podskup svih boja da kreiramo manju paletu boja za generisanje šema boja, takođe dostupne kao Sass varijable i Sass mapa u našoj scss/_variables.scss
datoteci.
Ekspanzivni skup sivih varijabli i Sass mapa scss/_variables.scss
za dosljedne nijanse sive u vašem projektu.
Unutar _variables.scss
, naći ćete naše varijable boja i Sass mapu. Evo primjera $colors
Sass mape:
Dodajte, uklonite ili izmijenite vrijednosti unutar karte da ažurirate način na koji se koriste u mnogim drugim komponentama. Nažalost, u ovom trenutku, ne koristi svaka komponenta ovu Sass mapu. Buduća ažuriranja će nastojati poboljšati ovo. Do tada planirajte da koristite ${color}
varijable i ovu Sass mapu.
Mnoge Bootstrap komponente i uslužni programi su izgrađeni sa @each
petljama koje se ponavljaju preko Sass mape. Ovo je posebno korisno za generiranje varijanti komponente od strane našeg $theme-colors
i kreiranje responzivnih varijanti za svaku tačku prekida. Dok prilagođavate ove Sass mape i ponovo kompajlirate, automatski ćete vidjeti svoje promjene koje se odražavaju u ovim petljama.
Mnoge Bootstrap komponente su izgrađene sa pristupom klase baznih modifikatora. To znači da je najveći dio stila sadržan u osnovnoj klasi (npr. .btn
), dok su varijacije stila ograničene na klase modifikatora (npr. .btn-danger
). Ove klase modifikatora su izgrađene iz $theme-colors
mape kako bi se prilagodili broj i naziv naših modifikatorskih klasa.
Evo dva primjera kako prelazimo preko $theme-colors
karte da bismo generirali modifikatore za .alert
komponentu i sve naše .bg-*
pozadinske uslužne programe.
Ni ove Sass petlje nisu ograničene na mape boja. Također možete generirati prilagodljive varijacije vaših komponenti ili uslužnih programa. Uzmimo za primjer naše pomoćne programe za poravnavanje teksta u kojima miješamo @each
petlju za $grid-breakpoints
Sass mapu s medijskim upitom koji uključuje.
Ako trebate izmijeniti svoj $grid-breakpoints
, vaše promjene će se primijeniti na sve petlje koje se ponavljaju preko te mape.
Bootstrap 4 uključuje oko dvadesetak CSS prilagođenih svojstava (varijabli) u svom prevedenom CSS-u. One omogućavaju lak pristup uobičajenim vrijednostima kao što su boje naše teme, tačke prekida i primarni skupovi fontova kada radite u Inspector-u vašeg pretraživača, zaštićenom okruženju koda ili generalnom prototipu.
Evo varijabli koje uključujemo (imajte na umu da :root
je potrebno). Oni se nalaze u našem _root.scss
dosijeu.
CSS varijable nude sličnu fleksibilnost kao i Sass-ove varijable, ali bez potrebe za kompilacijom prije nego što se serviraju u pretraživač. Na primjer, ovdje resetujemo font i stilove veze naše stranice pomoću CSS varijabli.
Također možete koristiti naše varijable tačke prekida u vašim medijskim upitima: