Theming Bootstrap
Kohandage Bootstrap 4 meie uute sisseehitatud Sassi muutujatega globaalsete stiilieelistuste jaoks, et hõlpsasti teemasid ja komponente muuta.
Sissejuhatus
Bootstrap 3-s ajendasid temaatilisust suuresti muutujate alistamised rakenduses LESS, kohandatud CSS ja eraldi teemalaaditabel, mille lisasime oma dist
failidesse. Mõne pingutusega saaks Bootstrap 3 välimuse täielikult ümber kujundada ilma põhifaile puudutamata. Bootstrap 4 pakub tuttavat, kuid veidi teistsugust lähenemist.
Nüüd on teemade kujundamine saavutatud Sassi muutujate, Sassi kaartide ja kohandatud CSS-i abil. Pole enam pühendatud teema stiilitabelit; selle asemel saate sisseehitatud teemal lubada gradiente, varje ja muud.
Sass
Kasutage meie Sassi lähtefaile, et kasutada ära muutujaid, kaarte, mixine ja palju muud, kui kompileerite Sassi oma varade konveieri abil.
Faili struktuur
Võimaluse korral vältige Bootstrapi põhifailide muutmist. Sassi jaoks tähendab see oma stiilitabeli loomist, mis impordib Bootstrapi, et saaksite seda muuta ja laiendada. Eeldades, et kasutate paketihaldurit nagu npm, on teil failistruktuur, mis näeb välja järgmine:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
Kui olete alla laadinud meie lähtefailid ja ei kasuta paketihaldurit, soovite käsitsi seadistada midagi sarnast selle struktuuriga, hoides Bootstrapi lähtefailid enda omadest eraldi.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Importimine
Saate custom.scss
importida Bootstrapi Sassi lähtefailid. Teil on kaks võimalust: kaasata kogu Bootstrap või valida vajalikud osad. Soovitame viimast, kuigi pidage meeles, et meie komponentidel on teatud nõuded ja sõltuvused. Samuti peate meie pistikprogrammide jaoks lisama JavaScripti.
// Custom.scss
// Option A: Include all of Bootstrap
// Include any default variable overrides here (though functions won't be available)
@import "../node_modules/bootstrap/scss/bootstrap";
// Then add additional custom code here
// Custom.scss
// Option B: Include parts of Bootstrap
// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)
@import "../node_modules/bootstrap/scss/functions";
// 2. Include any default variable overrides here
// 3. Include remainder of required Bootstrap stylesheets
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
// 4. Include any optional Bootstrap components as you like
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/code";
@import "../node_modules/bootstrap/scss/grid";
Kui see seadistus on paigas, saate hakata muutma mis tahes Sassi muutujaid ja kaarte oma custom.scss
. // Optional
Vajadusel saate jaotise alla hakata lisama ka Bootstrapi osi . Soovitame bootstrap.scss
lähtepunktina kasutada meie faili täielikku impordivirna.
Muutuvad vaikesätted
Iga Bootstrapi Sassi muutuja sisaldab !default
lippu, mis võimaldab teil alistada muutuja vaikeväärtuse oma Sassis ilma Bootstrapi lähtekoodi muutmata. Vajadusel kopeerige ja kleepige muutujad, muutke nende väärtusi ja eemaldage !default
lipp. Kui muutuja on juba määratud, ei määrata seda Bootstrapi vaikeväärtuste alusel uuesti.
Bootstrapi muutujate täieliku loendi leiate scss/_variables.scss
. Mõned muutujad on seatud väärtusele null
, need muutujad ei väljasta atribuuti, välja arvatud juhul, kui need on teie konfiguratsioonis alistatud.
Muutujate alistamised peavad tulema pärast meie funktsioonide, muutujate ja segude importimist, kuid enne ülejäänud importimist.
Siin on näide, mis muudab Bootstrapi importimisel background-color
ja kompileerimisel npm-i kaudu ja color
jaoks :<body>
@import "../node_modules/bootstrap/scss/functions";
// Default variable overrides
$body-bg: #000;
$body-color: #111;
// Required
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
// Optional Bootstrap components here
@import "../node_modules/bootstrap/scss/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
Korrake seda vastavalt vajadusele mis tahes Bootstrapi muutuja puhul, sealhulgas allolevate globaalsete valikute puhul.
Kaardid ja silmused
Bootstrap 4 sisaldab käputäis Sassi kaarte, võtmeväärtuste paare, mis hõlbustavad seotud CSS-i perekondade loomist. Kasutame oma värvide, ruudustiku murdepunktide ja muu jaoks Sassi kaarte. Nii nagu Sassi muutujad, sisaldavad kõik Sassi kaardid !default
lippu ning neid saab tühistada ja laiendada.
Mõned meie Sassi kaardid liidetakse vaikimisi tühjaks. Seda tehakse selleks, et võimaldada antud Sassi kaarti hõlpsasti laiendada, kuid see muudab üksuste kaardilt eemaldamise pisut keerulisemaks.
Muuda kaarti
Meie $theme-colors
kaardil olemasoleva värvi muutmiseks lisage oma kohandatud Sassi failile järgmine:
$theme-colors: (
"primary": #0074d9,
"danger": #ff4136
);
Lisa kaardile
Uue värvi $theme-colors
lisamiseks lisage uus võti ja väärtus:
$theme-colors: (
"custom-color": #900
);
Eemalda kaardilt
Värvide eemaldamiseks $theme-colors
kaardilt või muult kaardilt kasutage map-remove
. Pidage meeles, et peate selle sisestama meie nõuete ja valikute vahele:
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
// Optional
@import "../node_modules/bootstrap/scss/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
...
Vajalikud võtmed
Bootstrap eeldab teatud võtmete olemasolu Sassi kaartides, nagu me neid ise kasutasime ja laiendasime. Kaasasolevate kaartide kohandamisel võite ilmneda tõrkeid, kui kasutatakse konkreetset Sassi kaardi võtit.
Näiteks kasutame linkide primary
, nuppude success
ja vormi olekute jaoks klahve , ja danger
. $theme-colors
Nende võtmete väärtuste asendamine ei tohiks probleeme tekitada, kuid nende eemaldamine võib põhjustada Sassi kompileerimise probleeme. Sellistel juhtudel peate muutma neid väärtusi kasutavat Sassi koodi.
Funktsioonid
Bootstrap kasutab mitut Sassi funktsiooni, kuid ainult alamhulk on rakendatav üldisele teemale. Värvikaartidelt väärtuste hankimiseks oleme lisanud kolm funktsiooni:
@function color($key: "blue") {
@return map-get($colors, $key);
}
@function theme-color($key: "primary") {
@return map-get($theme-colors, $key);
}
@function gray($key: "100") {
@return map-get($grays, $key);
}
Need võimaldavad teil valida Sassi kaardilt ühe värvi sarnaselt sellega, kuidas kasutaksite v3 värvimuutujat.
.custom-element {
color: gray("100");
background-color: theme-color("dark");
}
Meil on ka teine funktsioon teatud värvitaseme saamiseks $theme-colors
kaardilt. Negatiivse taseme väärtused muudavad värvi heledamaks, kõrgemad tasemed aga tumedamaks.
@function theme-color-level($color-name: "primary", $level: 0) {
$color: theme-color($color-name);
$color-base: if($level > 0, #000, #fff);
$level: abs($level);
@return mix($color-base, $color, $level * $theme-color-interval);
}
Praktikas kutsuksite funktsiooni välja ja sisestaksite kaks parameetrit: värvi nimetus $theme-colors
(nt esmane või oht) ja numbriline tase.
.custom-element {
color: theme-color-level(primary, -10);
}
Tulevikus saab lisada täiendavaid funktsioone või oma kohandatud Sassi, et luua täiendavate Sassi kaartide jaoks tasemefunktsioone või isegi üldiseid funktsioone, kui soovite olla üksikasjalikum.
Värvi kontrast
Täiendav funktsioon, mille lisame Bootstrapi, on värvide kontrasti funktsioon color-yiq
. See kasutab YIQ värviruumi , et automaatselt tagastada heleda ( #fff
) või tumeda ( #111
) kontrastvärviga, mis põhineb määratud põhivärvil. See funktsioon on eriti kasulik mixinide või tsüklite puhul, kus genereerite mitu klassi.
Näiteks meie $theme-colors
kaardilt värvinäidiste genereerimiseks tehke järgmist.
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-yiq($value);
}
}
Seda saab kasutada ka ühekordseks kontrastivajaduseks:
.custom-element {
color: color-yiq(#000); // returns `color: #fff`
}
Põhivärvi saate määrata ka meie värvikaardi funktsioonidega:
.custom-element {
color: color-yiq(theme-color("dark")); // returns `color: #fff`
}
Põgenemine SVG-st
SVG-taustapiltide jaoks kasutame escape-svg
funktsiooni <
, >
ja märkide vältimiseks. #
Taustapiltide õigeks renderdamiseks IE-s tuleb need märgid kasutada. Funktsiooni kasutamisel escape-svg
tuleb andme-URI-sid tsiteerida.
Lisa- ja lahutamisfunktsioonid
Kasutame CSS-i funktsiooni mähistamiseks funktsioone add
ja . Nende funktsioonide peamine eesmärk on vältida vigu, kui avaldisesse edastatakse ühikuta väärtus . Väljendid nagu tagastavad veateate kõigis brauserites, hoolimata sellest, et need on matemaatiliselt õiged.subtract
calc
0
calc
calc(10px - 0)
Näide, kus arvutus kehtib:
$border-radius: .25rem;
$border-width: 1px;
.element {
// Output calc(.25rem - 1px) is valid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output the same calc(.25rem - 1px) as above
border-radius: subtract($border-radius, $border-width);
}
Näide, kus arvutus on vale:
$border-radius: .25rem;
$border-width: 0;
.element {
// Output calc(.25rem - 0) is invalid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output .25rem
border-radius: subtract($border-radius, $border-width);
}
Sassi valikud
Kohandage Bootstrap 4 meie sisseehitatud kohandatud muutujate failiga ja vahetage hõlpsalt globaalseid CSS-i eelistusi uute $enable-*
Sassi muutujatega. Muutuja väärtuse tühistamine ja npm run test
vajaduse korral uuesti kompileerimine.
Saate neid muutujaid Bootstrapi scss/_variables.scss
failist peamiste globaalsete valikute jaoks leida ja kohandada.
Muutuv | Väärtused | Kirjeldus |
---|---|---|
$spacer |
1rem (vaikimisi) või mis tahes väärtus > 0 |
Määrab vahetüki vaikeväärtuse meie spaceri utiliitide programmiliseks genereerimiseks . |
$enable-rounded |
true (vaikimisi) võifalse |
Lubab border-radius erinevate komponentide eelmääratletud stiilid. |
$enable-shadows |
true või false (vaikimisi) |
Lubab box-shadow erinevate komponentide eelmääratletud dekoratiivstiile. Ei mõjuta box-shadow fookusolekutes kasutatavat s. |
$enable-gradients |
true või false (vaikimisi) |
background-image Lubab erinevate komponentide stiilide kaudu eelmääratletud gradiente . |
$enable-transitions |
true (vaikimisi) võifalse |
Lubab eelmääratletud transition s erinevatel komponentidel. |
$enable-prefers-reduced-motion-media-query |
true (vaikimisi) võifalse |
Lubab prefers-reduced-motion meediumipäringu , mis blokeerib kasutaja brauseri/operatsioonisüsteemi eelistuste põhjal teatud animatsioonid/üleminekud. |
$enable-hover-media-query |
true või false (vaikimisi) |
Aegunud |
$enable-grid-classes |
true (vaikimisi) võifalse |
Võimaldab ruudustikusüsteemi jaoks CSS-klasside genereerimist (nt , .container , .row , .col-md-1 jne). |
$enable-caret |
true (vaikimisi) võifalse |
Lubab pseudoelemendi caret on .dropdown-toggle . |
$enable-pointer-cursor-for-buttons |
true (vaikimisi) võifalse |
Lisage "käsi" kursor mittekeelatud nupuelementidele. |
$enable-print-styles |
true (vaikimisi) võifalse |
Lubab stiilid printimise optimeerimiseks. |
$enable-responsive-font-sizes |
true või false (vaikimisi) |
Lubab reageerivad fondisuurused . |
$enable-validation-icons |
true (vaikimisi) võifalse |
Lubab background-image ikoonid tekstisisendites ja mõnedes kohandatud vormides valideerimisolekute jaoks. |
$enable-deprecation-messages |
true (vaikimisi) võifalse |
Seadistage olekusse, false et peita hoiatused, kui kasutate mõnda aegunud miksini ja funktsiooni, mis on plaanis rakenduses eemaldada v5 . |
Värv
Paljud Bootstrapi erinevad komponendid ja utiliidid on üles ehitatud Sassi kaardil määratletud värvide seeria kaudu. Seda kaarti saab Sassis üle vaadata, et luua kiiresti reeglistiku seeria.
Kõik värvid
Kõik Bootstrap 4-s saadaolevad värvid on saadaval Sassi muutujatena ja scss/_variables.scss
failis Sassi kaardina. Seda laiendatakse järgmistes väiksemates väljaannetes, et lisada täiendavaid toone, sarnaselt juba kaasatud halltoonide palettiga .
Saate neid oma Sassis kasutada järgmiselt.
// With variable
.alpha { color: $purple; }
// From the Sass map with our `color()` function
.beta { color: color("purple"); }
Värvi kasulikkuse klassid on saadaval ka seadistamiseks color
ja background-color
.
Teema värvid
Väiksema värvipaleti loomiseks värviskeemide loomiseks kasutame kõigi värvide alamhulka, mis on saadaval ka Sassi muutujatena ja Sassi kaardina Bootstrapi scss/_variables.scss
failis.
Hallid
Laialdane hallide muutujate komplekt ja Sassi kaart, mis scss/_variables.scss
tagab teie projektis ühtsed halli varjundid. Pange tähele, et need on "jahedad hallid", mis kalduvad pigem õrna sinise tooni poole, mitte neutraalsete hallide poole.
Seest scss/_variables.scss
leiate Bootstrapi värvimuutujad ja Sassi kaardi. Siin on näide $colors
Sassi kaardist:
$colors: (
"blue": $blue,
"indigo": $indigo,
"purple": $purple,
"pink": $pink,
"red": $red,
"orange": $orange,
"yellow": $yellow,
"green": $green,
"teal": $teal,
"cyan": $cyan,
"white": $white,
"gray": $gray-600,
"gray-dark": $gray-800
) !default;
Lisage, eemaldage või muutke kaardil väärtusi, et värskendada nende kasutamist paljudes teistes komponentides. Kahjuks ei kasuta praegu kõik komponendid seda Sassi kaarti. Tulevased värskendused püüavad seda parandada. Kuni selle ajani ${color}
plaanige muutujaid ja seda Sassi kaarti kasutada.
Komponendid
Paljud Bootstrapi komponendid ja utiliidid on üles ehitatud @each
silmustega, mis korduvad Sassi kaardi kaudu. See on eriti kasulik meie poolt komponendi variantide genereerimiseks $theme-colors
ja iga katkestuspunkti jaoks tundlike variantide loomiseks. Kui kohandate neid Sassi kaarte ja kompileerite uuesti, näete nendes tsüklites automaatselt oma muudatusi.
Modifikaatorid
Paljud Bootstrapi komponendid on ehitatud baasmodifikaatori klassi lähenemisviisiga. See tähendab, et suurem osa stiilist sisaldub põhiklassis (nt .btn
), samas kui stiilivariatsioonid on piiratud modifikaatoriklassidega (nt .btn-danger
). Need modifikaatoriklassid on koostatud $theme-colors
kaardist, et saaksime kohandada meie modifikaatoriklasside arvu ja nimesid.
Siin on kaks näidet selle kohta, kuidas me teeme $theme-colors
kaarti, et genereerida .alert
komponendi ja kõigi meie taustautiliitide modifikaatorid .bg-*
.
// Generate alert modifier classes
@each $color, $value in $theme-colors {
.alert-#{$color} {
@include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));
}
}
// Generate `.bg-*` color utilities
@each $color, $value in $theme-colors {
@include bg-variant('.bg-#{$color}', $value);
}
Vastutulelik
Need Sassi silmused ei piirdu ka värvikaartidega. Samuti saate luua oma komponentidest või utiliitidest reageerivaid variatsioone. Võtke näiteks meie reageerivad teksti joondamise utiliidid, kus segame Sassi kaardi @each
silmuse $grid-breakpoints
meediumipäringuga.
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.text#{$infix}-left { text-align: left !important; }
.text#{$infix}-right { text-align: right !important; }
.text#{$infix}-center { text-align: center !important; }
}
}
Kui teil on vaja oma kaarti muuta $grid-breakpoints
, rakenduvad teie muudatused kõikidele sellel kaardil korduvatele silmustele.
CSS-i muutujad
Bootstrap 4 sisaldab oma kompileeritud CSS-is umbes kahte tosinat CSS-i kohandatud atribuuti (muutujat) . Need pakuvad lihtsat juurdepääsu sageli kasutatavatele väärtustele, nagu meie teemavärvid, katkestuspunktid ja peamised fondivirnad, kui töötate brauseri inspektoris, koodi liivakastis või üldises prototüüpimises.
Saadaolevad muutujad
Siin on muutujad, mida me kaasame (pange tähele, et see :root
on kohustuslik). Need asuvad meie _root.scss
failis.
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
Näited
CSS-i muutujad pakuvad samasugust paindlikkust kui Sassi muutujad, kuid ilma brauserile esitamise vajaduseta kompileerimine. Näiteks lähtestame siin oma lehe fondi ja lingi stiilid CSS-i muutujatega.
body {
font: 1rem/1.5 var(--font-family-sans-serif);
}
a {
color: var(--blue);
}
Katkestuspunkti muutujad
Kuigi algselt kaasasime oma CSS-i muutujatesse (nt --breakpoint-md
) katkestuspunkte, ei toetata neid meediumipäringute puhul, kuid neid saab siiski kasutada meediumipäringute reeglistiku sees . Need murdepunkti muutujad jäävad kompileeritud CSS-i tagasiühilduvuse tagamiseks, kuna JavaScript saab neid kasutada. Lisateavet leiate spetsifikatsioonist .
Siin on näide sellest, mida ei toetata:
@media (min-width: var(--breakpoint-sm)) {
...
}
Ja siin on näide sellest, mida toetatakse:
@media (min-width: 768px) {
.custom-element {
color: var(--primary);
}
}