Sass
Gebruik onze Sass-bronbestanden om te profiteren van variabelen, kaarten, mixins en functies om u te helpen sneller te bouwen en uw project aan te passen.
Gebruik onze Sass-bronbestanden om te profiteren van variabelen, kaarten, mixins en meer.
Bestandsstructuur
Vermijd waar mogelijk het wijzigen van de kernbestanden van Bootstrap. Voor Sass betekent dat het maken van uw eigen stylesheet die Bootstrap importeert, zodat u deze kunt wijzigen en uitbreiden. Ervan uitgaande dat u een pakketbeheerder zoals npm gebruikt, heeft u een bestandsstructuur die er als volgt uitziet:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
Als je onze bronbestanden hebt gedownload en geen pakketbeheerder gebruikt, moet je handmatig iets instellen dat lijkt op die structuur, waarbij je de bronbestanden van Bootstrap gescheiden houdt van die van jezelf.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Importeren
In uw custom.scss
, importeert u de Sass-bronbestanden van Bootstrap. Je hebt twee opties: voeg alle Bootstrap toe, of kies de onderdelen die je nodig hebt. We moedigen het laatste aan, maar houd er rekening mee dat er enkele vereisten en afhankelijkheden zijn tussen onze componenten. U moet ook wat JavaScript toevoegen voor onze plug-ins.
// 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/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/containers";
@import "../node_modules/bootstrap/scss/grid";
// 5. Add additional custom code here
Met die opstelling kunt u beginnen met het wijzigen van alle Sass-variabelen en -kaarten in uw custom.scss
. Je kunt ook beginnen met het toevoegen van delen van Bootstrap onder de // Optional
sectie als dat nodig is. We raden aan om de volledige importstack uit ons bootstrap.scss
bestand als startpunt te gebruiken.
Standaardwaarden van variabelen
Elke Sass-variabele in Bootstrap bevat de !default
vlag waarmee u de standaardwaarde van de variabele in uw eigen Sass kunt overschrijven zonder de broncode van Bootstrap te wijzigen. Kopieer en plak variabelen indien nodig, wijzig hun waarden en verwijder de !default
vlag. Als een variabele al is toegewezen, wordt deze niet opnieuw toegewezen door de standaardwaarden in Bootstrap.
U vindt de volledige lijst met Bootstrap-variabelen in scss/_variables.scss
. Sommige variabelen zijn ingesteld op null
, deze variabelen voeren de eigenschap niet uit, tenzij ze worden overschreven in uw configuratie.
Variabele overschrijvingen moeten komen nadat onze functies zijn geïmporteerd, maar vóór de rest van de import.
Hier is een voorbeeld dat de background-color
en color
voor de verandert <body>
bij het importeren en compileren van Bootstrap via npm:
// Required
@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
Herhaal indien nodig voor elke variabele in Bootstrap, inclusief de globale opties hieronder.
Kaarten en lussen
Bootstrap bevat een handvol Sass-kaarten, sleutelwaardeparen die het gemakkelijker maken om families van gerelateerde CSS te genereren. We gebruiken Sass-kaarten voor onze kleuren, rasteronderbrekingspunten en meer. Net als Sass-variabelen, bevatten alle Sass-kaarten de !default
vlag en kunnen ze worden overschreven en uitgebreid.
Sommige van onze Sass-kaarten zijn standaard samengevoegd tot lege. Dit wordt gedaan om een bepaalde Sass-kaart gemakkelijk uit te breiden, maar gaat ten koste van het iets moeilijker maken van het verwijderen van items van een kaart.
Wijzig kaart
Alle variabelen in de $theme-colors
kaart zijn gedefinieerd als op zichzelf staande variabelen. Om een bestaande kleur op onze $theme-colors
kaart te wijzigen, voegt u het volgende toe aan uw aangepaste Sass-bestand:
$primary: #0074d9;
$danger: #ff4136;
Later worden deze variabelen ingesteld op de $theme-colors
kaart van Bootstrap:
$theme-colors: (
"primary": $primary,
"danger": $danger
);
Toevoegen aan kaart
Voeg nieuwe kleuren toe aan $theme-colors
, of een andere kaart, door een nieuwe Sass-kaart te maken met uw aangepaste waarden en deze samen te voegen met de originele kaart. In dit geval zullen we een nieuwe $custom-colors
kaart maken en deze samenvoegen met $theme-colors
.
// Create your own map
$custom-colors: (
"custom-color": #900
);
// Merge the maps
$theme-colors: map-merge($theme-colors, $custom-colors);
Van kaart verwijderen
Gebruik om kleuren van $theme-colors
, of een andere kaart te verwijderen map-remove
. Houd er rekening mee dat u deze tussen onze vereisten en opties moet invoegen:
// 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";
// etc
Vereiste sleutels
Bootstrap veronderstelt de aanwezigheid van enkele specifieke sleutels binnen Sass-kaarten zoals we deze zelf hebben gebruikt en uitgebreid. Terwijl u de meegeleverde kaarten aanpast, kunt u fouten tegenkomen wanneer de sleutel van een specifieke Sass-kaart wordt gebruikt.
We gebruiken bijvoorbeeld de toetsen primary
, success
, en danger
van $theme-colors
voor links, knoppen en formulierstatussen. Het vervangen van de waarden van deze sleutels zou geen problemen moeten opleveren, maar het verwijderen ervan kan Sass-compilatieproblemen veroorzaken. In deze gevallen moet u de Sass-code wijzigen die gebruikmaakt van die waarden.
Functies
Kleuren
Naast de Sass-kaarten die we hebben, kunnen themakleuren ook als zelfstandige variabelen worden gebruikt, zoals $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
U kunt kleuren lichter of donkerder maken met Bootstrap's tint-color()
en shade-color()
functies. Deze functies zullen kleuren mengen met zwart of wit, in tegenstelling tot Sass' native lighten()
en darken()
functies die de lichtheid met een vaste hoeveelheid zullen veranderen, wat vaak niet tot het gewenste effect leidt.
// Tint a color: mix a color with white
@function tint-color($color, $weight) {
@return mix(white, $color, $weight);
}
// Shade a color: mix a color with black
@function shade-color($color, $weight) {
@return mix(black, $color, $weight);
}
// Shade the color if the weight is positive, else tint it
@function shift-color($color, $weight) {
@return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
}
In de praktijk zou je de functie aanroepen en de kleur- en gewichtsparameters doorgeven.
.custom-element {
color: tint-color($primary, 10%);
}
.custom-element-2 {
color: shade-color($danger, 30%);
}
Kleurcontrast
Om te voldoen aan de WCAG 2.0-toegankelijkheidsnormen voor kleurcontrast , moeten auteurs een contrastverhouding van ten minste 4,5:1 opgeven , op enkele uitzonderingen na.
Een extra functie die we in Bootstrap opnemen is de kleurcontrastfunctie, color-contrast
. Het gebruikt het WCAG 2.0-algoritme voor het berekenen van contrastdrempels op basis van relatieve luminantie in een sRGB
kleurruimte om automatisch een lichte ( #fff
), donkere ( #212529
) of zwarte ( #000
) contrastkleur te retourneren op basis van de opgegeven basiskleur. Deze functie is vooral handig voor mixins of loops waarin u meerdere klassen genereert.
Om bijvoorbeeld kleurstalen van onze $theme-colors
kaart te genereren:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-contrast($value);
}
}
Het kan ook worden gebruikt voor eenmalige contrastbehoeften:
.custom-element {
color: color-contrast(#000); // returns `color: #fff`
}
U kunt ook een basiskleur specificeren met onze kleurenkaartfuncties:
.custom-element {
color: color-contrast($dark); // returns `color: #fff`
}
Ontsnap aan SVG
We gebruiken de escape-svg
functie om te ontsnappen aan de tekens <
, >
en #
voor SVG-achtergrondafbeeldingen. Bij gebruik van de escape-svg
functie moeten gegevens-URI's worden aangehaald.
Functies optellen en aftrekken
We gebruiken de add
en subtract
functies om de CSS- calc
functie in te pakken. Het primaire doel van deze functies is om fouten te voorkomen wanneer een "eenheidloze" 0
waarde wordt doorgegeven aan een calc
uitdrukking. Uitdrukkingen zoals calc(10px - 0)
geven een foutmelding in alle browsers, ondanks dat ze wiskundig correct zijn.
Voorbeeld waarbij de calc geldig is:
$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);
}
Voorbeeld waarbij de calc ongeldig is:
$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);
}
Mixins
Onze scss/mixins/
directory heeft een heleboel mixins die delen van Bootstrap aandrijven en die ook voor uw eigen project kunnen worden gebruikt.
Kleurenschema's
Een verkorte mixin voor de prefers-color-scheme
mediaquery is beschikbaar met ondersteuning voor light
, dark
, en aangepaste kleurenschema's.
@mixin color-scheme($name) {
@media (prefers-color-scheme: #{$name}) {
@content;
}
}
.custom-element {
@include color-scheme(dark) {
// Insert dark mode styles here
}
@include color-scheme(custom-named-scheme) {
// Insert custom color scheme styles here
}
}