Theming Bootstrap
Prilagodite Bootstrap 4 s našim novim ugrađenim Sass varijablama za globalne preferencije stila za laku promjenu tema i komponenti.
Uvod
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.
Sass
Iskoristite naše izvorne Sass datoteke da iskoristite prednosti varijabli, mapa, miksa i još mnogo toga. U našoj verziji smo povećali Sass preciznost zaokruživanja na 6 (podrazumevano je 5) da bismo sprečili probleme sa zaokruživanjem pretraživača.
Struktura fajla
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.
Uvoz
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.
Varijabilne zadane postavke
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.
Naći ćete kompletnu listu varijabli Bootstrapa u scss/_variables.scss
. Neke varijable su postavljene na null
, te varijable ne daju svojstvo osim ako nisu nadjačane u vašoj konfiguraciji.
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.
Mape i petlje
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.
Izmijenite mapu
Da biste izmijenili postojeću boju na našoj $theme-colors
mapi, dodajte sljedeće u svoju prilagođenu Sass datoteku:
Dodaj na mapu
Da dodate novu boju u $theme-colors
, dodajte novi ključ i vrijednost:
Ukloni sa mape
Za uklanjanje boja sa $theme-colors
, ili bilo koje druge karte, koristite map-remove
. Imajte na umu da ga morate umetnuti između naših zahtjeva i opcija:
Potrebni ključevi
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.
Funkcije
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.
Kontrast boja
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:
Escape SVG
Koristimo escape-svg
funkciju za izbjegavanje znakova <
, >
i #
za SVG pozadinske slike. Ovi znakovi moraju biti prikazani kako bi se pravilno prikazale pozadinske slike u IE.
Funkcije sabiranja i oduzimanja
Koristimo add
i subtract
funkcije da omotamo CSS calc
funkciju. Primarna svrha ovih funkcija je izbjegavanje grešaka kada se 0
vrijednost „bez jedinica“ prenese u calc
izraz. Izrazi poput calc(10px - 0)
će vratiti grešku u svim pretraživačima, uprkos tome što su matematički ispravni.
Primjer gdje je izračun valjan:
Primjer gdje je izračun nevažeći:
Sass opcije
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 Bootstrap scss/_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-prefers-reduced-motion-media-query |
true (podrazumevano) ilifalse |
Omogućava prefers-reduced-motion medijski upit , koji potiskuje određene animacije/prijelaze na osnovu preferencija pretraživača/operativnog sistema korisnika. |
$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-pointer-cursor-for-buttons |
true (podrazumevano) ilifalse |
Dodajte "ručni" kursor na elemente dugmadi koji nisu onemogućeni. |
$enable-print-styles |
true (podrazumevano) ilifalse |
Omogućava stilove za optimizaciju štampanja. |
$enable-responsive-font-sizes |
true ili false (zadano) |
Omogućava responzivne veličine fonta . |
$enable-validation-icons |
true (podrazumevano) ilifalse |
Omogućava background-image ikone unutar tekstualnih unosa i neke prilagođene obrasce za stanja validacije. |
$enable-deprecation-messages |
true ili false (zadano) |
Postavite na true za prikazivanje upozorenja kada koristite bilo koji od zastarjelih miksa i funkcija koje se planiraju ukloniti u v5 . |
Boja
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
Sve boje dostupne u Bootstrap 4, dostupne su kao Sass varijable i Sass mapa u 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.
Tematske boje
Koristimo podskup svih boja da kreiramo manju paletu boja za generisanje šema boja, takođe dostupne kao Sass varijable i Sass mapa u Bootstrap scss/_variables.scss
datoteci.
Greys
Ekspanzivni skup sivih varijabli i Sass mapa scss/_variables.scss
za dosljedne nijanse sive u vašem projektu. Imajte na umu da su to „hladne sive“, koje teže suptilnom plavom tonu, a ne neutralnim sivim.
Unutar scss/_variables.scss
, naći ćete Bootstrap-ove 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.
Komponente
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.
Modifikatori
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.
Responsive
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.
CSS varijable
Bootstrap 4 uključuje oko dva tuceta 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.
Dostupne varijable
Evo varijabli koje uključujemo (imajte na umu da :root
je potrebno). Oni se nalaze u našem _root.scss
dosijeu.
Primjeri
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.
Varijable prelomne tačke
Iako smo prvobitno uključili tačke prekida u naše CSS varijable (npr. --breakpoint-md
), one nisu podržane u medijskim upitima , ali se i dalje mogu koristiti unutar skupova pravila u medijskim upitima. Ove varijable tačke prekida ostaju u prevedenom CSS-u radi kompatibilnosti unazad s obzirom da ih JavaScript može koristiti. Saznajte više u specifikaciji .
Evo primjera onoga što nije podržano:
A evo i primjera onoga što je podržano: