Sass
Tirhisa tifayela ta hina ta Sass ta xihlovo ku tirhisa swilo leswi cinca-cincaka, mimepe, mixins, na mintirho ku ku pfuna ku aka hi ku hatlisa na ku lulamisa phurojeke ya wena.
Tirhisa tifayela ta hina ta Sass ta xihlovo ku tirhisa swilo leswi cinca-cincaka, mimepe, mixins, na swin’wana.
Xivumbeko xa fayili
Loko swi koteka, papalata ku cinca tifayela ta nkoka ta Bootstrap. Eka Sass, sweswo swi vula ku endla stylesheet ya wena leyi nghenisaka Bootstrap leswaku u ta kota ku yi cinca no yi andlala. Loko hi ehleketa leswaku u tirhisa mufambisi wa phasela ku fana na npm, u ta va na xivumbeko xa fayili lexi langutekaka hi ndlela leyi:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
Loko u dawunilode tifayela ta hina ta xihlovo naswona u nga tirhisi mufambisi wa tiphasela, u ta lava ku endla hi voko nchumu lowu fanaka ni xivumbeko xexo, u hlayisa tifayela ta xihlovo ta Bootstrap ti hambanile ni ta wena.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Ku nghenisa swilo etikweni
Eka custom.scss
, u ta nghenisa tifayela ta Sass ta xihlovo xa Bootstrap. U na tindlela timbirhi: katsa hinkwaswo swa Bootstrap, kutani u hlawula swiphemu leswi u swi lavaka. Hi khutaza leswi swo hetelela, hambi leswi tivaka leswaku ku na swilaveko swo karhi na ku titshega eka swiphemu swa hina hinkwaswo. U ta tlhela u lava ku katsa JavaScript yin’wana ya ti-plugin ta hina.
// 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";
// 4. Include any default map overrides here
// 5. Include remainder of required parts
@import "../node_modules/bootstrap/scss/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// 6. Optionally include any other parts as needed
@import "../node_modules/bootstrap/scss/utilities";
@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";
@import "../node_modules/bootstrap/scss/helpers";
// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
@import "../node_modules/bootstrap/scss/utilities/api";
// 8. Add additional custom code here
Loko setup yoleyo yi ri kona, u nga sungula ku cinca xin’wana ni xin’wana xa swilo leswi cinca-cincaka swa Sass ni mimepe eka custom.scss
. U nga ha tlhela u sungula ku engetela swiphemu swa Bootstrap ehansi ka // Optional
xiyenge tanihilaha swi lavekaka hakona. Hi ringanyeta ku tirhisa xithaki xo nghenisa hi ku helela ku suka eka bootstrap.scss
fayili ya hina tanihi masungulo ya wena.
Swihlawulekisi leswi cinca-cincaka
Xihlawulekisi xin’wana na xin’wana xa Sass eka Bootstrap xi katsa !default
mujeko lowu ku pfumelelaka ku tlula nkoka wa xiviri wa xihlawulekisi eka Sass ya wena handle ko cinca khodi ya xihlovo ya Bootstrap. Kopa u tlhela u namarheta swilo leswi cinca-cincaka hilaha swi lavekaka hakona, cinca mimpimo ya swona, ivi u susa !default
mujeko. Loko xihlawulekisi se xi averiwe, kutani a xi nge he averiwi nakambe hi mimpimo ya ntolovelo eka Bootstrap.
U ta kuma nxaxamelo lowu heleleke wa swilo leswi cinca-cincaka swa Bootstrap eka scss/_variables.scss
. Swilo swin’wana leswi cinca-cincaka swi vekiwile eka null
, swilo leswi swi nga humesi nhundzu handle ka loko swi tluriwile eka xivumbeko xa wena.
Ku tlula loku cinca-cincaka ku fanele ku ta endzhaku ka loko mintirho ya hina yi nghenisiwile, kambe emahlweni ka ku nghenisiwa hinkwako.
Hi lexi xikombiso lexi cincaka background-color
na color
xa <body>
loko u nghenisa na ku hlengeleta Bootstrap hi ku tirhisa 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/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// Optional Bootstrap components here
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
Phindha tanihilaha swi lavekaka hakona eka xihlawulekisi xihi na xihi eka Bootstrap, ku katsa na swihlawulekisi swa misava hinkwayo laha hansi.
Mimepe na swirhendzevutana
Bootstrap yi katsa mimepe yitsongo ya Sass, mimpatswa ya nkoka ya nkoka leyi endlaka leswaku swi olova ku tumbuluxa mindyangu ya CSS leyi fambelanaka. Hi tirhisa mimepe ya Sass eka mihlovo ya hina, tindhawu to tshoveka ta gridi ni swin’wana. Ku fana na swilo leswi cinca-cincaka swa Sass, mimepe hinkwayo ya Sass yi katsa !default
mujeko naswona yi nga ha tluriwa no andlariwa.
Yin’wana ya mimepe ya hina ya Sass yi hlanganisiwa yi va leyi nga riki na nchumu hi ku tiyimisela. Leswi swi endliwa ku pfumelela ku ndlandlamuxiwa ko olova ka mepe wa Sass lowu nyikiweke, kambe swi ta hi ntsengo wo endla leswaku ku susa swilo eka mepe swi tika nyana.
Cinca mepe
Swilo hinkwaswo leswi cinca-cincaka $theme-colors
emepeni swi hlamuseriwa tanihi swilo leswi cinca-cincaka leswi tiyimeleke swoxe. Ku cinca muvala lowu nga kona eka $theme-colors
mepe wa hina, engetela leswi landzelaka eka fayili ya wena ya Sass ya ntolovelo:
$primary: #0074d9;
$danger: #ff4136;
Endzhaku ka nkarhi, swilo leswi swi cinca-cincaka swi vekiwa eka $theme-colors
mepe wa Bootstrap:
$theme-colors: (
"primary": $primary,
"danger": $danger
);
Engetela eka mepe
Engetela mihlovo leyintshwa eka $theme-colors
, kumbe mepe wun’wana ni wun’wana, hi ku endla mepe lowuntshwa wa Sass hi mimpimo ya wena ya ntolovelo ivi u wu hlanganisa ni mepe wo sungula. Eka xiyimo lexi, hi ta endla $custom-colors
mepe lowuntshwa ivi hi wu hlanganisa na $theme-colors
.
// Create your own map
$custom-colors: (
"custom-color": #900
);
// Merge the maps
$theme-colors: map-merge($theme-colors, $custom-colors);
Susa eka mepe
Ku susa mihlovo eka $theme-colors
, kumbe mepe wun’wana ni wun’wana, tirhisa map-remove
. Tiva leswaku u fanele ku nghenisa $theme-colors
exikarhi ka swilaveko swa hina endzhaku nyana ka nhlamuselo ya yona eka variables
na le mahlweni ka ku tirhisiwa ka yona eka maps
:
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
@import "../node_modules/bootstrap/scss/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// Optional
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
Swilotlelo leswi lavekaka
Bootstrap yi teka vukona bya swilotlelo swin’wana swo karhi endzeni ka mimepe ya Sass tani hi leswi hi tirhiseke na ku andlala leswi hi hexe. Loko u ri karhi u lulamisa mimepe leyi katsekaka, u nga ha hlangana ni swihoxo laha ku tirhisiwaka xilotlelo xo karhi xa mepe wa Sass.
Hi xikombiso, hi tirhisa primary
, success
, na danger
swilotlelo leswi humaka $theme-colors
eka swihlanganisi, swikomba-nkarhi ni swiyimo swa fomo. Ku cinca mimpimo ya swilotlelo leswi a swi fanelanga ku humesa timhaka, kambe ku swi susa swi nga vanga swiphiqo swa nhlengeleto wa Sass. Eka swiyimo leswi, u ta lava ku cinca khodi ya Sass leyi tirhisaka mimpimo yoleyo.
Mintirho
Mihlovo
Etlhelo ka mimepe ya Sass leyi hi nga na yona, mihlovo ya nhlokomhaka yi nga tlhela yi tirhisiwa tanihi swilo leswi cinca-cincaka leswi tiyimeleke, ku fana na $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
U nga voninga kumbe ku endla mihlovo ya ntima hi Bootstrap's tint-color()
na shade-color()
mintirho. Mintirho leyi yi ta hlanganisa mihlovo na ya ntima kumbe yo basa, ku hambana na Sass’ native lighten()
na darken()
mintirho leyi nga ta cinca ku olova hi mpimo lowu vekiweke, leswi talaka ku nga yisi eka mbuyelo lowu lavekaka.
// 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));
}
Hi ku tirhisa, u ta vitana ntirho ivi u hundza eka tipharamitha ta muvala ni ntiko.
.custom-element {
color: tint-color($primary, 10%);
}
.custom-element-2 {
color: shade-color($danger, 30%);
}
Ku hambana ka mihlovo
Leswaku ku fikeleriwa swilaveko swa ku hambana ka Swiletelo swa ku Fikelela ka Vuxokoxoko bya Webu (WCAG) , vatsari va fanele ku nyika ku hambana ka mihlovo ya matsalwa ya le hansi ka 4.5:1 na ku hambana ka mihlovo ya le hansi leyi nga riki ya matsalwa ya 3:1 , handle ka swin’wana switsongo swinene.
Ku pfuneta eka leswi, hi katse color-contrast
ntirho eka Bootstrap. Yi tirhisa algorithm ya WCAG contrast ratio ku hlayela swipimelo swa ku hambana leswi simekiweke eka ku vonakala loku ringanaka eka ndhawu ya sRGB
mihlovo ku vuyisa hi ku tisungulela muvala wo hambana wo vonakala ( #fff
), munyama ( #212529
) kumbe wa ntima ( #000
) lowu sekeriweke eka muvala wa le hansi lowu boxiweke. Ntirho lowu wu pfuna ngopfu eka ti mixins kumbe ti loops laha u humesaka ti class to tala.
Hi xikombiso, ku endla swifaniso swa mihlovo ku suka eka $theme-colors
mepe wa hina:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-contrast($value);
}
}
Yi nga ha tlhela yi tirhisiwa eka swilaveko swa ku hambana ka nkarhi wun’we:
.custom-element {
color: color-contrast(#000); // returns `color: #fff`
}
U nga ha tlhela u boxa muvala wa le hansi hi mintirho ya hina ya mepe wa mihlovo:
.custom-element {
color: color-contrast($dark); // returns `color: #fff`
}
Balekela SVG
Hi tirhisa escape-svg
ntirho ku balekela <
, >
na #
swihlawulekisi swa swifaniso swa le ndzhaku swa SVG. Loko u tirhisa escape-svg
ntirho, ti-URI ta data ti fanele ku tshahiwa.
Mintirho yo Engetela na ku Susa
Hi tirhisa mintirho ya add
na subtract
ku phutsela calc
ntirho wa CSS. Xikongomelonkulu xa mintirho leyi i ku papalata swihoxo loko ntikelo lowu “nga riki na yuniti” 0
wu hundziseriwa eka calc
xivulavulelo. Swivulavulelo swo fana na leswi calc(10px - 0)
swi ta vuyisa xihoxo eka swihlamusela-marito hinkwaswo, hambileswi swi nga ntiyiso hi tlhelo ra tinhlayo.
Xikombiso laha calc yi tirhaka kona:
$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);
}
Xikombiso laha calc yi nga tirhiki:
$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);
}
Ti- mixins
Directory ya hina scss/mixins/
yi na thani ya mixins leyi nyikaka matimba eka swiphemu swa Bootstrap naswona yi nga tlhela yi tirhisiwa ku tsemakanya phurojeke ya wena.
Swikimi swa mihlovo
Mixin ya xitlhokovetselo xa prefers-color-scheme
xivutiso xa midiya ya kumeka hi nseketelo wa light
, dark
, na swikimi swa mihlovo ya ntolovelo.
@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
}
}