Sass
Gebruik ons bron-Sass-lêers om voordeel te trek uit veranderlikes, kaarte, mixins en funksies om jou te help om vinniger te bou en jou projek aan te pas.
Gebruik ons bron Sass-lêers om voordeel te trek uit veranderlikes, kaarte, mixins, en meer.
Lêerstruktuur
Waar moontlik, vermy die wysiging van Bootstrap se kernlêers. Vir Sass beteken dit om jou eie stylblad te skep wat Bootstrap invoer sodat jy dit kan verander en uitbrei. As u aanvaar dat u 'n pakketbestuurder soos npm gebruik, sal u 'n lêerstruktuur hê wat soos volg lyk:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
As jy ons bronlêers afgelaai het en nie 'n pakketbestuurder gebruik nie, sal jy iets soortgelyk aan daardie struktuur met die hand wil opstel, en Bootstrap se bronlêers apart van jou eie hou.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Invoer
In jou custom.scss
sal jy Bootstrap se bron Sass-lêers invoer. Jy het twee opsies: sluit die hele Bootstrap in, of kies die onderdele wat jy nodig het. Ons moedig laasgenoemde aan, maar wees bewus daarvan dat daar sekere vereistes en afhanklikhede oor ons komponente heen is. Jy sal ook JavaScript vir ons inproppe moet insluit.
// 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 daardie opstelling in plek, kan jy begin om enige van die Sass veranderlikes en kaarte in jou custom.scss
. Jy kan ook begin om dele van Bootstrap onder die // Optional
afdeling by te voeg soos nodig. Ons stel voor dat u die volledige invoerstapel vanaf ons bootstrap.scss
lêer as u beginpunt gebruik.
Veranderlike verstekke
Elke Sass-veranderlike in Bootstrap bevat die !default
vlag wat jou toelaat om die veranderlike se verstekwaarde in jou eie Sass te ignoreer sonder om Bootstrap se bronkode te verander. Kopieer en plak veranderlikes soos nodig, verander hul waardes en verwyder die !default
vlag. As 'n veranderlike reeds toegewys is, sal dit nie hertoegewys word deur die verstekwaardes in Bootstrap nie.
Jy sal die volledige lys van Bootstrap se veranderlikes in vind scss/_variables.scss
. Sommige veranderlikes is ingestel op null
, hierdie veranderlikes voer nie die eienskap uit nie, tensy hulle in jou konfigurasie oorskryf word.
Veranderlike oorskrywings moet kom nadat ons funksies ingevoer is, maar voor die res van die invoere.
Hier is 'n voorbeeld wat die background-color
en color
vir die verander <body>
wanneer Bootstrap via npm invoer en saamgestel word:
// 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 soos nodig vir enige veranderlike in Bootstrap, insluitend die globale opsies hieronder.
Kaarte en lusse
Bootstrap bevat 'n handvol Sass-kaarte, sleutelwaardepare wat dit makliker maak om families van verwante CSS te genereer. Ons gebruik Sass-kaarte vir ons kleure, roosterafbreekpunte en meer. Net soos Sass-veranderlikes, bevat alle Sass-kaarte die !default
vlag en kan dit oorskryf en uitgebrei word.
Sommige van ons Sass-kaarte word by verstek in leë kaarte saamgevoeg. Dit word gedoen om maklike uitbreiding van 'n gegewe Sass-kaart moontlik te maak, maar dit kom ten koste daarvan om die verwydering van items van 'n kaart effens moeiliker te maak.
Verander kaart
Alle veranderlikes in die $theme-colors
kaart word as selfstandige veranderlikes gedefinieer. Om 'n bestaande kleur in ons $theme-colors
kaart te verander, voeg die volgende by jou pasgemaakte Sass-lêer:
$primary: #0074d9;
$danger: #ff4136;
Later word hierdie veranderlikes in Bootstrap se $theme-colors
kaart gestel:
$theme-colors: (
"primary": $primary,
"danger": $danger
);
Voeg by kaart
Voeg nuwe kleure by $theme-colors
, of enige ander kaart, deur 'n nuwe Sass-kaart met jou pasgemaakte waardes te skep en dit met die oorspronklike kaart saam te voeg. In hierdie geval sal ons 'n nuwe $custom-colors
kaart skep en dit saamvoeg met $theme-colors
.
// Create your own map
$custom-colors: (
"custom-color": #900
);
// Merge the maps
$theme-colors: map-merge($theme-colors, $custom-colors);
Verwyder van kaart
Om kleure van $theme-colors
, of enige ander kaart te verwyder, gebruik map-remove
. Wees bewus daarvan dat jy dit tussen ons vereistes en opsies moet invoeg:
// 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 veronderstel die teenwoordigheid van 'n paar spesifieke sleutels binne Sass-kaarte soos ons dit gebruik het en dit self uitbrei. Soos jy die ingeslote kaarte pasmaak, kan jy foute teëkom waar 'n spesifieke Sass-kaart se sleutel gebruik word.
Byvoorbeeld, ons gebruik die primary
, success
, en danger
sleutels van $theme-colors
vir skakels, knoppies en vormtoestande. Die vervanging van die waardes van hierdie sleutels behoort geen probleme op te lewer nie, maar die verwydering daarvan kan probleme met Sass-samestelling veroorsaak. In hierdie gevalle sal jy die Sass-kode wat van daardie waardes gebruik maak, moet verander.
Funksies
Kleure
Benewens die Sass-kaarte wat ons het, kan temakleure ook as selfstandige veranderlikes gebruik word, soos $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
Jy kan kleure ligter of donkerder maak met Bootstrap's tint-color()
en shade-color()
funksies. Hierdie funksies sal kleure met swart of wit meng, anders as Sass se oorspronklike lighten()
en darken()
funksies wat die ligheid met 'n vaste hoeveelheid sal verander, wat dikwels nie tot die gewenste effek lei nie.
// 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 die praktyk sal jy die funksie oproep en die kleur- en gewigparameters deurgee.
.custom-element {
color: tint-color($primary, 10%);
}
.custom-element-2 {
color: shade-color($danger, 30%);
}
Kleur kontras
Om aan WCAG 2.0 toeganklikheidstandaarde vir kleurkontras te voldoen, moet skrywers ' n kontrasverhouding van ten minste 4.5:1 verskaf , met baie min uitsonderings.
'n Bykomende funksie wat ons in Bootstrap insluit, is die kleurkontrasfunksie, color-contrast
. Dit gebruik die WCAG 2.0-algoritme vir die berekening van kontrasdrempels gebaseer op relatiewe luminansie in 'n sRGB
kleurruimte om outomaties 'n ligte ( #fff
), donker ( #212529
) of swart ( #000
) kontraskleur op grond van die gespesifiseerde basiskleur terug te gee. Hierdie funksie is veral nuttig vir mixins of loops waar jy verskeie klasse genereer.
Byvoorbeeld, om kleurmonsters vanaf ons $theme-colors
kaart te genereer:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-contrast($value);
}
}
Dit kan ook gebruik word vir eenmalige kontrasbehoeftes:
.custom-element {
color: color-contrast(#000); // returns `color: #fff`
}
U kan ook 'n basiskleur spesifiseer met ons kleurkaartfunksies:
.custom-element {
color: color-contrast($dark); // returns `color: #fff`
}
Ontsnap SVG
Ons gebruik die escape-svg
funksie om die <
, >
en #
karakters vir SVG agtergrond beelde te ontsnap. Wanneer die escape-svg
funksie gebruik word, moet data-URI's aangehaal word.
Optel en aftrek funksies
Ons gebruik die add
en subtract
-funksies om die CSS- calc
funksie om te draai. Die primêre doel van hierdie funksies is om foute te vermy wanneer 'n "eenheidlose" 0
waarde in 'n calc
uitdrukking oorgedra word. Uitdrukkings soos calc(10px - 0)
sal 'n fout in alle blaaiers gee, al is dit wiskundig korrek.
Voorbeeld waar die berekening 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 waar die berekening 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);
}
Mengsels
Ons scss/mixins/
gids het 'n ton mengsels wat dele van Bootstrap aandryf en kan ook oor jou eie projek gebruik word.
Kleurskemas
'n Snelskrifmengsel vir die prefers-color-scheme
medianavraag is beskikbaar met ondersteuning vir light
, dark
, en pasgemaakte kleurskemas.
@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
}
}