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 iactabatur a variabilibus overridis in minore, consuetudine CSS, et thema styli separati quod in distscriniis nostris includimus. 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.

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 mutare custom.scss. Etiam incipere potes partes Bootstrap sub // Optionalsectione addere prout opus est. Monemus utendo plenam importare acervum ex tabella nostra bootstrap.scssut tuum principium.

Defaltis variabilis

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

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 mappas mappas Sass includit, valoris 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 exsistentem in nostra $theme-colorsmapa mutandum, 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

Ad colores e $theme-colorsvel alia quavis tabula removenda, utere map-remove:

$theme-colors: map-remove($theme-colors, "success", "info", "danger");

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 unum additional 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`
}

Denominare etiam potes turpem colorem cum functionibus chartaceis nostris coloratis;

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

Sass optiones

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

Has variabiles variabiles pro clavis global optiones invenire potes et in tabella nostra reperire _variables.scss.

Variabilis Values ​​​​ Descriptio
$spacer 1rem(Annum) aut aliquo valore> 0 Defectum designat valorem Ad programmatice generandum spacer Utilitas nostra .
$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-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-print-styles true(Annum) or *false Dat styles ad optimizing printing.

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 sicut variabiles Sass et tabula Sass in tabella nostra scss/_variables.scss. 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

Tabulario omnium colorum utimur ad coloratum minorem palette ad generandum machinas, etiam in promptu sunt sicut variabiles Sass et tabula Sass in tabella nostra 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.

100
200
300
400
500
600
700
800
900

Intus _variables.scss, invenies varios colores nostros 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 modificationes classes concluduntur (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 nostrae curriculi.

// 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 mappam colorandam. Generare etiam potes variationes responsivas partium vel utilitatum tuarum. Sume pro exemplo nostro responsivo texti alignment utilitas 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 mutare tuas $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 ea compilata CSS. Hae accessum facilem praebent ad valores communiter usus sicut thema colorum, fracturae, et primariae fontis acervos cum operantur in inspectoris tui navigatoris, 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, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

Exempla

Variabiles CSS similem flexibilitatem praebent variabilibus Sass, 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);
}

Etiam nostris variabilibus breakpoint in instrumentis quaestionibus tuis uti potes:

.content-secondary {
  display: none;
}

@media (min-width(var(--breakpoint-sm))) {
  .content-secondary {
    display: block;
  }
}