Theming Bootstrap
Pielāgojiet Bootstrap 4, izmantojot mūsu jaunos iebūvētos Sass mainīgos, lai iegūtu globālas stila preferences, lai atvieglotu tēmu un komponentu maiņu.
Ievads
Operētājsistēmā Bootstrap 3 motīvu veidošanu lielā mērā noteica mainīgo ignorēšana LESS, pielāgotā CSS un atsevišķa motīva stila lapa, ko iekļāvām savos distfailos. Ar nelielu piepūli varētu pilnībā pārveidot Bootstrap 3 izskatu, nepieskaroties galvenajiem failiem. Bootstrap 4 nodrošina pazīstamu, bet nedaudz atšķirīgu pieeju.
Tagad tēmu veidošanu veic, izmantojot Sass mainīgos, Sass kartes un pielāgoto CSS. Nav vairs īpašas tēmas stila lapas; tā vietā varat iespējot iebūvēto motīvu, lai pievienotu gradientus, ēnas un daudz ko citu.
Sass
Izmantojiet mūsu avota Sass failus, lai izmantotu mainīgo, karšu, mixins un citas priekšrocības, kompilējot Sass , izmantojot savu līdzekļu konveijeru.
Failu struktūra
Kad vien iespējams, izvairieties no Bootstrap pamatfailu modificēšanas. Sass gadījumā tas nozīmē izveidot savu stila lapu, kas importē Bootstrap, lai jūs varētu to modificēt un paplašināt. Pieņemot, ka izmantojat pakotņu pārvaldnieku, piemēram, npm, faila struktūra izskatīsies šādi:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
Ja esat lejupielādējis mūsu avota failus un neizmantojat pakotņu pārvaldnieku, vēlēsities manuāli iestatīt kaut ko līdzīgu šai struktūrai, turot Bootstrap avota failus atsevišķi no saviem.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Notiek importēšana
Savā custom.scss, jūs importēsit Bootstrap avota Sass failus. Jums ir divas iespējas: iekļaut visu Bootstrap vai izvēlēties vajadzīgās daļas. Mēs iesakām izmantot pēdējo, lai gan ņemiet vērā, ka mūsu komponentiem ir dažas prasības un atkarības. Jums būs jāiekļauj arī daži JavaScript spraudņi.
// 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";
Kad šī iestatīšana ir ieviesta, varat sākt modificēt jebkuru no Sass mainīgajiem un kartēm savā custom.scss. Varat arī sākt pievienot Bootstrap daļas zem // Optionalsadaļas, ja nepieciešams. Mēs iesakām bootstrap.scsskā sākumpunktu izmantot pilnu importēšanas steku no mūsu faila.
Mainīgie noklusējuma iestatījumi
Katrs Bootstrap Sass mainīgais ietver !defaultkarogu, kas ļauj ignorēt mainīgā noklusējuma vērtību savā Sass, nemainot Bootstrap avota kodu. Ja nepieciešams, kopējiet un ielīmējiet mainīgos, mainiet to vērtības un noņemiet !defaultkarogu. Ja mainīgais jau ir piešķirts, tas netiks atkārtoti piešķirts pēc noklusējuma vērtībām programmā Bootstrap.
Pilnu Bootstrap mainīgo sarakstu atradīsit scss/_variables.scss. Daži mainīgie ir iestatīti uz null, šie mainīgie neizvada rekvizītu, ja vien tie nav ignorēti jūsu konfigurācijā.
Mainīgo ignorēšanai ir jānāk pēc mūsu funkciju, mainīgo un kombināciju importēšanas, bet pirms pārējās importēšanas.
Šeit ir piemērs, kas maina background-colorun colorfor <body>, importējot un kompilējot Bootstrap, izmantojot npm:
@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
Atkārtojiet pēc vajadzības jebkuram Bootstrap mainīgajam, tostarp tālāk norādītajām globālajām opcijām.
Kartes un cilpas
Bootstrap 4 ietver dažas Sass kartes, atslēgu vērtību pārus, kas atvieglo saistīto CSS saišu ģenerēšanu. Mēs izmantojam Sass kartes savām krāsām, režģa pārtraukuma punktiem un citiem. Tāpat kā Sass mainīgajos, visās Sass kartēs ir ietverts !defaultkarogs, un tās var ignorēt un paplašināt.
Dažas no mūsu Sass kartēm pēc noklusējuma ir sapludinātas tukšās. Tas tiek darīts, lai dotu Sass karti viegli izvērstu, taču par to vienumu noņemšana no kartes ir nedaudz grūtāka.
Mainīt karti
Lai mainītu esošu krāsu mūsu $theme-colorskartē, pievienojiet savam pielāgotajam Sass failam:
$theme-colors: (
"primary": #0074d9,
"danger": #ff4136
);
Pievienot kartei
Lai pievienotu jaunu krāsu $theme-colors, pievienojiet jaunu atslēgu un vērtību:
$theme-colors: (
"custom-color": #900
);
Noņemt no kartes
Lai noņemtu krāsas no $theme-colorsvai jebkuras citas kartes, izmantojiet map-remove. Ņemiet vērā, ka tas ir jāievieto starp mūsu prasībām un opcijām:
// 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";
...
Nepieciešamās atslēgas
Bootstrap pieņem noteiktu atslēgu klātbūtni Sass kartēs, kā mēs tās izmantojām un paplašinājām. Pielāgojot iekļautās kartes, var rasties kļūdas, ja tiek izmantota noteikta Sass kartes atslēga.
Piemēram, saitēm, pogām un veidlapu stāvokļiem mēs izmantojam taustiņus primary, successun . Šo atslēgu vērtību aizstāšana nedrīkst radīt problēmas, taču to noņemšana var izraisīt Sass kompilēšanas problēmas. Šādos gadījumos jums būs jāmaina Sass kods, kas izmanto šīs vērtības.danger$theme-colors
Funkcijas
Bootstrap izmanto vairākas Sass funkcijas, taču tikai apakškopa ir piemērojama vispārīgai tēmai. Mēs esam iekļāvuši trīs funkcijas vērtību iegūšanai no krāsu kartēm:
@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);
}
Tie ļauj izvēlēties vienu krāsu no Sass kartes līdzīgi kā jūs izmantotu krāsu mainīgo no v3.
.custom-element {
color: gray("100");
background-color: theme-color("dark");
}
Mums ir arī cita funkcija, lai no kartes iegūtu noteiktu krāsu līmeni . $theme-colorsNegatīvā līmeņa vērtības padarīs krāsu gaišāku, bet augstākas - tumšākas.
@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);
}
Praksē jūs izsaucat funkciju un nododat divus parametrus: krāsas nosaukumu no $theme-colors(piemēram, primārā vai bīstamā) un skaitlisko līmeni.
.custom-element {
color: theme-color-level(primary, -10);
}
Nākotnē var pievienot papildu funkcijas vai savu pielāgoto Sass, lai izveidotu līmeņa funkcijas papildu Sass kartēm vai pat vispārīgas funkcijas, ja vēlaties būt detalizētāks.
Krāsu kontrasts
Papildu funkcija, ko mēs iekļaujam Bootstrap, ir krāsu kontrasta funkcija, color-yiq. Tas izmanto YIQ krāsu telpu , lai automātiski atgrieztu gaišu ( #fff) vai tumšu ( #111) kontrastkrāsu, pamatojoties uz norādīto pamatkrāsu. Šī funkcija ir īpaši noderīga miksīniem vai cilpām, kurās ģenerējat vairākas klases.
Piemēram, lai ģenerētu krāsu paraugus no mūsu $theme-colorskartes:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-yiq($value);
}
}
To var izmantot arī vienreizējām kontrasta vajadzībām:
.custom-element {
color: color-yiq(#000); // returns `color: #fff`
}
Varat arī norādīt pamatkrāsu, izmantojot mūsu krāsu kartes funkcijas:
.custom-element {
color: color-yiq(theme-color("dark")); // returns `color: #fff`
}
Aizbēgt no SVG
Mēs izmantojam escape-svgfunkciju, lai izvairītu no un <rakstzīmēm SVG fona attēliem. Lai pareizi atveidotu fona attēlus pārlūkprogrammā IE, šīs rakstzīmes ir jāaizpilda. Lietojot funkciju, datu URI ir jākotē.>#escape-svg
Pievienošanas un atņemšanas funkcijas
Mēs izmantojam addun subtractfunkcijas, lai aplauztu CSS calcfunkciju. Šo funkciju galvenais mērķis ir izvairīties no kļūdām, kad 0izteiksmē tiek nodota vērtība “bez vienības” calc. Izteiksmes, piemēram calc(10px - 0), atgriezīs kļūdu visās pārlūkprogrammās, neskatoties uz to, ka tās ir matemātiski pareizas.
Piemērs, kur aprēķins ir derīgs:
$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);
}
Piemērs, kur aprēķins nav derīgs:
$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);
}
Sass opcijas
Pielāgojiet Bootstrap 4, izmantojot mūsu iebūvēto pielāgoto mainīgo failu, un viegli pārslēdziet globālās CSS preferences ar jauniem $enable-*Sass mainīgajiem. Ignorēt mainīgā vērtību un npm run testpēc vajadzības atkārtoti kompilējiet ar.
Varat atrast un pielāgot šos mainīgos galvenajām globālajām opcijām Bootstrap scss/_variables.scssfailā.
| Mainīgs | Vērtības | Apraksts |
|---|---|---|
$spacer |
1rem(noklusējums) vai jebkura vērtība > 0 |
Norāda noklusējuma atstarpes vērtību, lai programmatiski ģenerētu mūsu starplikas utilītas . |
$enable-rounded |
true(noklusējums) vaifalse |
Iespējo iepriekš definētus border-radiusstilus dažādiem komponentiem. |
$enable-shadows |
truevai false(noklusējums) |
Iespējo iepriekš definētus dekoratīvos box-shadowstilus dažādiem komponentiem. Neietekmē box-shadowfokusa stāvokļiem izmantoto s. |
$enable-gradients |
truevai false(noklusējums) |
Iespējo iepriekš definētus gradientus, izmantojot background-imagedažādu komponentu stilus. |
$enable-transitions |
true(noklusējums) vaifalse |
Iespējo iepriekš definētus transitions dažādos komponentos. |
$enable-prefers-reduced-motion-media-query |
true(noklusējums) vaifalse |
Iespējo prefers-reduced-motionmultivides vaicājumu , kas apspiež noteiktas animācijas/pārejas, pamatojoties uz lietotāja pārlūkprogrammas/operētājsistēmas preferencēm. |
$enable-hover-media-query |
truevai false(noklusējums) |
Novecojis |
$enable-grid-classes |
true(noklusējums) vaifalse |
Iespējo CSS klašu ģenerēšanu režģa sistēmai (piemēram, .container, .row, .col-md-1, utt.). |
$enable-caret |
true(noklusējums) vaifalse |
Iespējo pseidoelementu caret on .dropdown-toggle. |
$enable-pointer-cursor-for-buttons |
true(noklusējums) vaifalse |
Pievienojiet “rokas” kursoru neatspējotajiem pogas elementiem. |
$enable-print-styles |
true(noklusējums) vaifalse |
Iespējo stilus drukāšanas optimizēšanai. |
$enable-responsive-font-sizes |
truevai false(noklusējums) |
Iespējo adaptīvus fontu izmērus . |
$enable-validation-icons |
true(noklusējums) vaifalse |
Iespējo background-imageikonas teksta ievadē un dažās pielāgotajās veidlapās validācijas stāvokļiem. |
$enable-deprecation-messages |
true(noklusējums) vaifalse |
Iestatiet uz, falselai paslēptu brīdinājumus, kad tiek izmantots kāds no novecojušajiem maisījumiem un funkcijām, ko plānots noņemt programmā v5. |
Krāsa
Daudzi no Bootstrap dažādajiem komponentiem un utilītprogrammām ir veidoti, izmantojot vairākas krāsas, kas noteiktas Sass kartē. Šo karti var pārcilāt Sass, lai ātri ģenerētu kārtulu kopas.
Visas krāsas
Visas Bootstrap 4 pieejamās krāsas ir pieejamas kā Sass mainīgie un Sass karte scss/_variables.scssfailā. Tas tiks paplašināts turpmākajos nelielajos izlaidumos, lai pievienotu papildu nokrāsas, līdzīgi kā jau iekļautajai pelēktoņu paletei .
Lūk, kā jūs varat tos izmantot savā Sass:
// With variable
.alpha { color: $purple; }
// From the Sass map with our `color()` function
.beta { color: color("purple"); }
Krāsu lietderības klases ir pieejamas arī iestatīšanai colorun background-color.
Tēmas krāsas
Mēs izmantojam visu krāsu apakškopu, lai izveidotu mazāku krāsu paleti krāsu shēmu ģenerēšanai, kas ir pieejama arī kā Sass mainīgie un Sass karte Bootstrap scss/_variables.scssfailā.
Pelēki
Plašs pelēko mainīgo kopums un Sass karte, kas scss/_variables.scssnodrošina konsekventus pelēkos toņus visā jūsu projektā. Ņemiet vērā, ka tie ir “vēsi pelēkie”, kuriem ir tendence uz smalku zilu toni, nevis neitrālu pelēko toni.
Vietnē scss/_variables.scss, jūs atradīsiet Bootstrap krāsu mainīgos un Sass karti. $colorsŠeit ir Sass kartes piemērs :
$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;
Pievienojiet, noņemiet vai modificējiet vērtības kartē, lai atjauninātu to izmantošanu daudzos citos komponentos. Diemžēl šobrīd ne katrs komponents izmanto šo Sass karti. Turpmākie atjauninājumi centīsies to uzlabot. Līdz tam plānojiet izmantot ${color}mainīgos lielumus un šo Sass karti.
Sastāvdaļas
Daudzi Bootstrap komponenti un utilītas ir veidoti ar @eachcilpām, kas atkārtojas Sass kartē. Tas ir īpaši noderīgi, lai mūsu ģenerētu komponenta $theme-colorsvariantus un izveidotu adaptīvus variantus katram pārtraukuma punktam. Pielāgojot šīs Sass kartes un atkārtoti kompilējot, jūsu izmaiņas tiks automātiski atspoguļotas šajās cilpās.
Modifikatori
Daudzi Bootstrap komponenti ir veidoti, izmantojot bāzes modifikatoru klases pieeju. Tas nozīmē, ka lielākā daļa stila ir ietverta pamatklasē (piemēram, .btn), savukārt stila variācijas ir ierobežotas ar modifikatoru klasēm (piemēram, .btn-danger). Šīs modifikatoru klases ir veidotas no $theme-colorskartes, lai pielāgotu mūsu modifikatoru klašu skaitu un nosaukumu.
Šeit ir divi piemēri tam, kā mēs $theme-colorspārveidojam karti, lai ģenerētu .alertkomponenta modifikatorus un visas mūsu .bg-*fona utilītas.
// 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);
}
Atsaucīgs
Šīs Sass cilpas neaprobežojas tikai ar krāsu kartēm. Varat arī ģenerēt savu komponentu vai utilītu adaptīvas variācijas. Piemēram, mūsu adaptīvās teksta līdzināšanas utilītas, kurās mēs sajaucam Sass kartes @eachcilpu $grid-breakpointsar multivides vaicājumu.
@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; }
}
}
Ja jums būs jāmaina $grid-breakpoints, jūsu izmaiņas attieksies uz visām cilpām, kas atkārtojas šajā kartē.
CSS mainīgie
Bootstrap 4 savā kompilētajā CSS ietver aptuveni divus desmitus pielāgotu CSS rekvizītu (mainīgo) . Tie nodrošina vieglu piekļuvi bieži lietotām vērtībām, piemēram, mūsu motīvu krāsām, pārtraukuma punktiem un primārajiem fontu skursteņiem, strādājot pārlūkprogrammas inspektorā, koda smilškastē vai vispārīgā prototipā.
Pieejamie mainīgie
Šeit ir iekļauti mainīgie (ņemiet vērā, ka tas :rootir obligāts). Tie atrodas mūsu _root.scssfailā.
: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;
}
Piemēri
CSS mainīgie piedāvā līdzīgu elastību kā Sass mainīgie, taču bez nepieciešamības tos apkopot, pirms tie tiek rādīti pārlūkprogrammai. Piemēram, šeit mēs atiestatām mūsu lapas fontu un saišu stilus, izmantojot CSS mainīgos.
body {
font: 1rem/1.5 var(--font-family-sans-serif);
}
a {
color: var(--blue);
}
Pārtraukuma punkta mainīgie
Lai gan sākotnēji savos CSS mainīgajos (piemēram, --breakpoint-md) iekļāvām pārtraukuma punktus, tie netiek atbalstīti multivides vaicājumos , taču tos joprojām var izmantot kārtulu kopās multivides vaicājumos. Šie pārtraukuma punkta mainīgie paliek kompilētajā CSS, lai nodrošinātu atpakaļsaderību, jo tos var izmantot JavaScript. Uzziniet vairāk specifikācijā .
Tālāk ir sniegts piemērs tam, kas netiek atbalstīts.
@media (min-width: var(--breakpoint-sm)) {
...
}
Un šeit ir atbalstītā atbalsta piemērs :
@media (min-width: 768px) {
.custom-element {
color: var(--primary);
}
}