Komponente
Naučite se, kako in zakaj gradimo skoraj vse naše komponente odzivno ter z osnovnimi in modifikatorskimi razredi.
Osnovni razredi
Komponente Bootstrapa so večinoma zgrajene z nomenklaturo osnovnih modifikatorjev. Čim več lastnosti v skupni rabi združimo v osnovni razred, na primer .btn
, nato pa posamezne sloge za vsako različico združimo v razrede modifikatorjev, na primer .btn-primary
ali .btn-success
.
Za izdelavo naših modifikatorskih razredov uporabljamo Sassove @each
zanke za ponavljanje po Sassovem zemljevidu. To je še posebej koristno za generiranje različic komponente z našimi $theme-colors
in ustvarjanje odzivnih različic za vsako prelomno točko. Ko prilagodite te zemljevide Sass in jih znova prevedete, boste samodejno videli, da se vaše spremembe odražajo v teh zankah.
Oglejte si naše zemljevide Sass in dokumente o zankah, da ugotovite, kako prilagoditi te zanke in razširiti Bootstrapov pristop osnovnega modifikatorja na vašo kodo.
Modifikatorji
Številne komponente Bootstrapa so zgrajene s pristopom razreda osnovnega modifikatorja. To pomeni, da je večina sloga vsebovana v osnovnem razredu (npr. .btn
), medtem ko so različice sloga omejene na razrede modifikatorjev (npr. .btn-danger
). Ti razredi modifikatorjev so zgrajeni iz $theme-colors
zemljevida za prilagoditev števila in imena naših razredov modifikatorjev.
Tu sta dva primera, kako preletimo $theme-colors
zemljevid, da ustvarimo modifikatorje za komponente .alert
in ..list-group
// Generate contextual modifier classes for colorizing the alert.
@each $state, $value in $theme-colors {
$alert-background: shift-color($value, $alert-bg-scale);
$alert-border: shift-color($value, $alert-border-scale);
$alert-color: shift-color($value, $alert-color-scale);
@if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
$alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
}
.alert-#{$state} {
@include alert-variant($alert-background, $alert-border, $alert-color);
}
}
// List group contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.
@each $state, $value in $theme-colors {
$list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
$list-group-variant-color: shift-color($value, $list-group-item-color-scale);
@if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
$list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
}
@include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
}
Odzivna
Tudi te Sassove zanke niso omejene na barvne zemljevide. Ustvarite lahko tudi odzivne različice svojih komponent. Vzemimo za primer našo odzivno poravnavo spustnih menijev, kjer mešamo @each
zanko za $grid-breakpoints
zemljevid Sass z medijskimi poizvedbami.
// We deliberately hardcode the `bs-` prefix because we check
// this custom property in JS to determine Popper's positioning
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.dropdown-menu#{$infix}-start {
--bs-position: start;
&[data-bs-popper] {
right: auto;
left: 0;
}
}
.dropdown-menu#{$infix}-end {
--bs-position: end;
&[data-bs-popper] {
right: 0;
left: auto;
}
}
}
}
Če spremenite svoj $grid-breakpoints
, bodo vaše spremembe veljale za vse zanke, ki ponavljajo ta zemljevid.
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
Za več informacij in primere o tem, kako spremeniti naše zemljevide in spremenljivke Sass, glejte razdelek Sass v dokumentaciji Grid .
Ustvarjanje lastnega
Priporočamo vam, da te smernice sprejmete pri gradnji z Bootstrapom, da ustvarite svoje komponente. Ta pristop smo sami razširili na komponente po meri v naši dokumentaciji in primerih. Komponente, kot so naši oblački, so zgrajene tako kot naše komponente z osnovnimi in modifikatorskimi razredi.
<div class="callout">...</div>
V svojem CSS-ju bi imeli nekaj podobnega naslednjemu, kjer se večina slogov izvede prek .callout
. Nato se edinstveni slogi med vsako različico nadzirajo prek razreda modifikatorja.
// Base class
.callout {}
// Modifier classes
.callout-info {}
.callout-warning {}
.callout-danger {}
Za oblačke je ta edinstven stil samo border-left-color
. Ko združite ta osnovni razred z enim od teh modifikatorskih razredov, dobite celotno družino komponent: