Source

Theming Bootstrap

Mos Bootstrap 4 cum novis nostris in Sass differentiis constructis pro optionibus global styli pro facili earum mutationibus et componentibus.

Introductio

In Bootstrap 3, thema late e vectibus variabilibus in minore, consuetudine CSS compulsum erat, et thema styli separati quod in documentis nostris comprehendimus dist. Cum aliquo nisu, potest perfecte resignare aspectum Bootstrap 3 sine nucleo imagini tactus. Bootstrap 4 familiarem praebet, sed paullo aliter accedunt.

Nunc lemma efficitur per variabiles Sass, mappas Sass et consuetudo CSS. Nulla thema stylesheet magis dedicatum; sed possis in themate constructum addere graduum, umbrarum, et plura.

Sass

Fontem nostrum Sass lima utantur variabilibus, mappis, mixinis et pluribus. In aedificando Sass rotundum praecisionem auximus ad 6 (per default 5) ne quaestiones cum navigatro circumagerent.

File structure

Quotiens fieri potest, vitare nucleos imaginum Bootstrap mutare. Pro Sass, id significat creans tuum stilum qui Bootstrap importat ut eam mutare et extendere possis. Si villico sarcina utens sicut npm, fasciculi structuram similem habebis:

your-project/
├── scss
│   └── custom.scss
└── node_modules/
    └── bootstrap
        ├── js
        └── scss

Si tabulas nostras fonte receptas et villico sarcina non utens, manually simile illi structurae vis ponere, servans fontem fasciculi Bootstrap a tuo proprio separatum.

your-project/
├── scss
│   └── custom.scss
└── bootstrap/
    ├── js
    └── scss

importat

In tuis custom.scss, fontem Sass files Bootstrap importes. Duo optiones habes: omnes Bootstrap comprehende, vel partes quas tibi necessarias colligunt. Adhortamur hos, licet conscii sint aliquas necessitates ac clientelas per partes nostras. Etiam JavaScript pro nostris plugins includere necesse erit.

// Custom.scss
// Option A: Include all of Bootstrap

@import "../node_modules/bootstrap/scss/bootstrap";
// Custom.scss
// Option B: Include parts of Bootstrap

// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";

// Optional
@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";

Cum illo loco constituto, potes aliquem ex Sassi variabilium et mappis in tuis mutandis incipere custom.scss. Etiam incipere potes partes Bootstrap sub // Optionalsectione addere prout opus est. Nos suadeamus utentes plenam import ACERVUM ex bootstrap.scssfasciculo nostro ut tuum principium.

Defaltis variabilis

Omnis Sass variabilis in Bootstrap 4 vexillum includit !defaultut te vincat valorem variantis default in tuo proprio Sass sine modificatione fons notae Bootstrap. Effingo et variabilium quae opus sunt crustulum, bona sua mutare, !defaultvexillum removere. Si variabilis iam assignata est, non rursus assignata per valores default in Bootstrap erit.

Integrum album variabilium Bootstrap invenies in scss/_variables.scss. Quaedam variabiles sunt positae null, hae variabiles proprietatem non praemittunt, nisi in configuratione tua opprimantur.

Variabiles fasciculi in eadem Sass fasciculi ante vel post defaltam variabilium venire possunt. Autem, cum trans fasciculos Sass summopere, praeiudicia tua venire debent antequam tu files Bootstrap's Sass importes.

Exemplum hic mutans background-coloret colorpro <body>inferentes et componendo Bootstrap per npm:

// Your variable overrides
$body-bg: #000;
$body-color: #111;

// Bootstrap and its default variables
@import "../node_modules/bootstrap/scss/bootstrap";

Repetere quam necessarium est cuilibet variabili in Bootstrap, optiones globales infra.

Maps et ansas

Bootstrap 4 paucas tabulas Sass comprehendit, pretii clavis paria quae facilius familias cognatorum CSS generandi faciunt. Utimur mappis Sass nostris coloribus, eget breakpoints, et magis. Sicut variabiles Sass, omnes maps Sass includunt !defaultvexillum et opprimi et extendi possunt.

Quaedam e nostris mappis Sass in vacuas per defaltam merguntur. Hoc factum est ut facilem datae tabulae Sass expansionem patiatur, sed cum periculo res e tabula aliquantulum difficilius removenda venit.

Mutare map

Ad colorem existentem in $theme-colorstabula nostra mitigandam, sequentia consuetudini tuae fasciculi Sass adde:

$theme-colors: (
  "primary": #0074d9,
  "danger": #ff4136
);

Add to map

Ad novum colorem $theme-colorsaddere, novam clavem et valorem addere;

$theme-colors: (
  "custom-color": #900
);

Aufer a tabula

Colores ab $theme-colorsaliave tabula tollere, utere map-remove. Scire te oportet inserere inter nostras exigentias et optiones;

// 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";
...

Requiritur claves

Bootstrap assumet praesentiam quarundam clavium specificorum in mappis Sass sicut nos has nosmetipsi usi sumus et extendimus. Ut tabulas inclusas domiciliis, errores incidere potes ubi certae tabulae Sass clavis adhibetur.

Verbi gratia, utimur e clauibus primary, clavibus success, nexus, globulis et civitatibus formantibus. Reponendi valores harum clavium nullas proventus exhibere debent, sed eas removere possunt quaestiones compilation Sass causare. His in rebus, debes mutare codicem Sass qui illis bonis utitur.danger$theme-colors

Munera

Bootstrap pluribus functionibus Sass utitur, sed solum subset commune thema commune est. Tria munera inclusa habuimus pro acquirendis valoribus ex mappis coloratis:

@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);
}

Hi permittunt tibi unum colorem ex tabula Sassa decerpere multum simile quomodo colore variabili ex v3.

.custom-element {
  color: gray("100");
  background-color: theme-color("dark");
}

Etiam aliud munus habemus ut certo gradu coloris e $theme-colorstabula comparandi. Negativae valores aequabunt colorem, dum superiora obscurabunt.

@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);
}

In praxi, munus appellas et in duos parametros transi: nomen coloris ab $theme-colors(eg, primario vel periculo) et gradu numerorum.

.custom-element {
  color: theme-color-level(primary, -10);
}

Additiones functiones in futuro vel propria consuetudine addi possent Sas ad functiones planas creandas pro mappis additis Sass, vel etiam genericum, si verbosius esse voluisti.

Color antithesis

Munus additum quod includimus in Bootstrap munus est color antithesis, color-yiq. Spatium colori YIQ utetur ut lumen automatice reddat ( #fff) vel obscurum ( #111) colorem discrepantem in basi determinato colore. Hoc munus maxime utile est ad mixinas vel ansas ubi plures classes generas.

Verbi gratia, ad generandum colorem permutat ex $theme-colorstabula nostra;

@each $color, $value in $theme-colors {
  .swatch-#{$color} {
    color: color-yiq($value);
  }
}

Potest etiam adhiberi ad contrarias necessitates una-off;

.custom-element {
  color: color-yiq(#000); // returns `color: #fff`
}

Specificare etiam potes turpem colorem cum functionibus chartaceis nostris coloratis;

.custom-element {
  color: color-yiq(theme-color("dark")); // returns `color: #fff`
}

fuge SVG

Munus utimur escape-svgad evadendi rationem <, >et #ingenia ad imagines background SVG. Eae notae fugiendae sunt ut imagines curriculorum in IE recte reddant.

Adde et subtrahe munera

Munus CSS involvere addac functionibus utimur . Finis primarius harum functionum est vitare errores cum valor " non" in expressionem transit . Similia locutiones errorem in omnibus navigatoribus reddent, licet mathematice corrigantur.subtractcalc0calccalc(10px - 0)

Exemplum ubi calc valet;

$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);
}

Exemplum ubi calc invalidum est;

$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 optiones

Mos Bootstrap 4 cum lima variabilium consuetudine aedificata et facile optiones global CSS cum novis $enable-*Sass differentiis toggle. Vincat valorem variabilis et recompile npm run testsicut opus est.

Potes invenire et domitare has variabiles pro clavis global optiones in tabella Bootstrap scss/_variables.scss.

Variabilis Values ​​​​ Descriptio
$spacer 1rem(Annum) aut aliquo valore> 0 Valorem defaltam designat ad grammatice Nostras generandas utilitates .
$enable-rounded true(Annum) or *false Dat praedefinitos border-radiusstylos in variis componentibus.
$enable-shadows trueseu false(default) Dat praedefinitos box-shadowstylos in variis componentibus.
$enable-gradients trueseu false(default) Gradientes praedefinitos dat per background-imagegenera in variis componentibus.
$enable-transitions true(Annum) or *false Dat praedefinitum transitionin variis componentibus.
$enable-prefers-reduced-motion-media-query true(Annum) or *false Interventus interrogationem prefers-reduced-motionefficit , quae certas animationes/transitiones supprimit in navigatro usorum/ratio optionum operandi.
$enable-hover-media-query trueseu false(default) Deprecatus
$enable-grid-classes true(Annum) or *false Generationem CSS genera dat pro ratiocinatione eget (exempli, .container, .row, .col-md-1etc.).
$enable-caret true(Annum) or *false Pseudo elementum caret .dropdown-toggle.
$enable-pointer-cursor-for-buttons true(Annum) or *false Adde "manum" cursorem ad elementa bullam non debiles.
$enable-print-styles true(Annum) or *false Dat styles ad optimizing printing.
$enable-responsive-font-sizes trueseu false(default) Dat magnitudinum responsiva fontium .
$enable-validation-icons true(Annum) or *false Icones background-imageefficit in inputationibus textualibus et quasdam consuetudines formas ad sanationem civitatum.
$enable-deprecation-messages trueseu false(default) Pone truemonita monstrare , cum quavis mixins et munera deprecata , quae in amovendis destinantur , adhibeantur v5.

Color

Multae variae compositiones et utilitates ex Bootstrap aedificatae sunt per seriem colorum in tabula Sass definitorum. Haec tabula in Sass constringi potest ad seriem regularum celeriter generandam.

Omnes colores

Omnes colores praesto sunt in Bootstrap 4, praesto sunt ut variabiles Sass et tabula in scss/_variables.scsslima Sass. Hoc dilatabitur in subsequentibus emissiones minores ad umbras additas addendi, multum sicut palette cineraceorum iam includimus.

caeruleum
Indicum
Purpura
Pink
rubrum
Orange
flavum
Viridis
Teal
Cyan

Ecce quomodo his uti potes in Sassa tua:

// With variable
.alpha { color: $purple; }

// From the Sass map with our `color()` function
.beta { color: color("purple"); }

Classes color utilitatis sunt etiam available pro occasu coloret background-color.

In posterum studebimus tabulas Sass et variabiles umbras cuiusque coloris praebere, sicut cum coloribus cineraceis infra fecimus.

Theme colorum

Tabulae omnium colorum utimur ad coloratum minorem palette ad generandum machinas, etiam in promptu sunt sicut variabiles Sass et tabula Sass in tabella Bootstrap scss/_variables.scss.

Primarium
secundarium
Success
Periculum
Monitum
Info
lux
Dark

Grays

Copula expansiva variabilium griseorum et mappam Sass in scss/_variables.scssumbras canosae per proiectum tuum constantes. Nota quod haec sunt "grisei frigidi", quae ad sonum subtilem caeruleum tendunt, quam grisei neutri.

100
200
300
400
500
600
700
800
900

Intus scss/_variables.scss, invenies variabiles colorum Bootstrap et mappam Sass. Exemplum $colorstabulae Sass.

$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;

Adde, remove, vel mitigare valores in tabula geographica ad renovandum quomodo in multis aliis componentibus adhibentur. Infeliciter hoc tempore, non omnibus componentibus hac Sass map utetur. Futuras renovationes super hoc emendare studebunt. Donec ${color}efficitur varius quam ac hac Sass map.

Components

Multae compositiones et utilitates ex Bootstrap aedificatae sunt @eachloramenta quae iterantur in tabula Sass. Hoc maxime utile est ad variantes compositionis generandas a nostris $theme-colorset variantibus responsivas pro unoquoque frangendo creando. Cum has mappas Sass domiciliis et componas, statim videbis tuas mutationes in his ansulis reflexas.

Modifiers

Multae compositiones Bootstrap constructae sunt cum accessu classium basi determinatio. Hoc significat molem styli turpi classi (exempli gratia .btn) contineri, dum variationes stili ad determinatas classes coercentur (exempli gratia .btn-danger). Hae classes determinativae e $theme-colorstabula aedificatae sunt ut numerus et nomen consuetudinum nostrarum determinativarum faceret.

Hic duo exempla sunt quomodo tabulam $theme-colorsperstringimus ad adiectiua generandi .alertcomponentium et omnes .bg-*utilitates in prospectu nostro.

// 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);
}

Responsivum

Hae loramenta Sass non limitantur ad mappas colorandas vel. Generare etiam potes variationes responsivas partium vel utilitatum tuarum. Sume pro exemplo nostro responsivo textus alignment utilitatum ubi permisceamus @eachansam pro $grid-breakpointstabula Sass cum interrogatione media includunt.

@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; }
  }
}

Si debes tuam mutare $grid-breakpoints, mutationes tuae ad omnes ansas iterando in tabula illa applicabuntur.

CSS variables

Bootstrap 4 comprehendit circa duas duodenas CSS possessiones consuetudinum (variabilium) in suis compilatis CSS. Hae accessum facilem praebent ad valores communiter usus sicut thema colorum, fracturae, et primariae fontis acervos cum operantur in inspectore navigatri, codicem sandbox, seu prototypum generale.

Available variables

Hic sunt variabiles includuntur (nota quod :rootrequiri). In pagina nostra sita sunt _root.scss.

: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", 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;
}

Exempla

Variabiles CSS similem flexibilitatem variantibus Sass praebent, sed sine necessitate compilationem antequam navigatro ministratur. Exempli gratia, hic fontam paginae nostrae et stylos nexus cum CSS variabilibus collocamus.

body {
  font: 1rem/1.5 var(--font-family-sans-serif);
}
a {
  color: var(--blue);
}

Breakpoint variables

Dum primum puncta in variabilibus CSS includimus (exempli gratia --breakpoint-md), hae in quaestionibus instrumentis non praebentur , sed adhuc intra regulas in quaestionibus instrumentis adhiberi possunt. Hae variabiles praevaricationis punctum in CSS exarato manent ad convenientiam retrorsum datam, ab JavaScript adhiberi possunt. Plura discere in spec .

Hic est exemplum quod suus non praebetur:

@media (min-width: var(--breakpoint-sm)) {
  ...
}

Et hic est exemplum rei .

@media (min-width: 768px) {
  .custom-element {
    color: var(--primary);
  }
}