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 dist
failos. 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 // Optional
sadaļas, ja nepieciešams. Mēs iesakām bootstrap.scss
kā sākumpunktu izmantot pilnu importēšanas steku no mūsu faila.
Mainīgie noklusējuma iestatījumi
Katrs Bootstrap Sass mainīgais ietver !default
karogu, 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 !default
karogu. 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-color
un color
for <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 !default
karogs, 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-colors
kartē, 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-colors
vai 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
, success
un . Š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-colors
Negatī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-colors
kartes:
@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-svg
funkciju, 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 add
un subtract
funkcijas, lai aplauztu CSS calc
funkciju. Šo funkciju galvenais mērķis ir izvairīties no kļūdām, kad 0
izteiksmē 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 test
pē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.scss
failā.
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-radius stilus dažādiem komponentiem. |
$enable-shadows |
true vai false (noklusējums) |
Iespējo iepriekš definētus dekoratīvos box-shadow stilus dažādiem komponentiem. Neietekmē box-shadow fokusa stāvokļiem izmantoto s. |
$enable-gradients |
true vai false (noklusējums) |
Iespējo iepriekš definētus gradientus, izmantojot background-image dažādu komponentu stilus. |
$enable-transitions |
true (noklusējums) vaifalse |
Iespējo iepriekš definētus transition s dažādos komponentos. |
$enable-prefers-reduced-motion-media-query |
true (noklusējums) vaifalse |
Iespējo prefers-reduced-motion multivides 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 |
true vai 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 |
true vai false (noklusējums) |
Iespējo adaptīvus fontu izmērus . |
$enable-validation-icons |
true (noklusējums) vaifalse |
Iespējo background-image ikonas teksta ievadē un dažās pielāgotajās veidlapās validācijas stāvokļiem. |
$enable-deprecation-messages |
true (noklusējums) vaifalse |
Iestatiet uz, false lai 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.scss
failā. 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 color
un 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.scss
failā.
Pelēki
Plašs pelēko mainīgo kopums un Sass karte, kas scss/_variables.scss
nodroš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 @each
cilpām, kas atkārtojas Sass kartē. Tas ir īpaši noderīgi, lai mūsu ģenerētu komponenta $theme-colors
variantus 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-colors
kartes, lai pielāgotu mūsu modifikatoru klašu skaitu un nosaukumu.
Šeit ir divi piemēri tam, kā mēs $theme-colors
pārveidojam karti, lai ģenerētu .alert
komponenta 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 @each
cilpu $grid-breakpoints
ar 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 :root
ir obligāts). Tie atrodas mūsu _root.scss
failā.
: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);
}
}