अवयवहरू
कसरी र किन हामी हाम्रा लगभग सबै कम्पोनेन्टहरू उत्तरदायी रूपमा र आधार र परिमार्जनक वर्गहरूको साथ निर्माण गर्छौं जान्नुहोस्।
आधारभूत कक्षाहरू
बुटस्ट्र्यापका कम्पोनेन्टहरू ठूलो मात्रामा आधार-परिमार्जक नामकरणसँग बनाइएका छन्। हामी सकेसम्म धेरै साझा गुणहरूलाई आधार वर्गमा समूहबद्ध गर्छौं, जस्तै .btn
, र त्यसपछि प्रत्येक संस्करणका लागि व्यक्तिगत शैलीहरूलाई परिमार्जक वर्गहरूमा समूहबद्ध गर्छौं, जस्तै .btn-primary
वा .btn-success
।
हाम्रो परिमार्जक वर्गहरू निर्माण गर्न, हामी @each
सास नक्सामा पुनरावृत्ति गर्न सासको लूपहरू प्रयोग गर्छौं। यो हाम्रो द्वारा कम्पोनेन्टको भेरियन्टहरू उत्पन्न गर्न $theme-colors
र प्रत्येक ब्रेकपोइन्टको लागि उत्तरदायी भेरियन्टहरू सिर्जना गर्नको लागि विशेष गरी उपयोगी छ। तपाईंले यी सास नक्साहरू अनुकूलित गर्दा र पुन: कम्पाइल गर्दा, तपाईंले यी लूपहरूमा आफ्ना परिवर्तनहरू स्वतः देख्नुहुनेछ।
यी लूपहरूलाई कसरी अनुकूलन गर्ने र बुटस्ट्र्यापको आधार परिमार्जन गर्ने दृष्टिकोणलाई आफ्नै कोडमा विस्तार गर्ने बारे हाम्रो Sass नक्सा र लुप्स कागजातहरू हेर्नुहोस्।
परिमार्जकहरू
बुटस्ट्र्यापका धेरै कम्पोनेन्टहरू आधार-परिमार्जक वर्ग दृष्टिकोणको साथ बनाइएका छन्। यसको मतलब स्टाइलको ठूलो हिस्सा आधार वर्ग (जस्तै, .btn
) मा समावेश गरिएको छ जबकि शैली भिन्नताहरू परिमार्जक वर्गहरूमा सीमित छन् (जस्तै, .btn-danger
)। यी परिमार्जक वर्गहरू $theme-colors
हाम्रो परिमार्जनक वर्गहरूको संख्या र नाम अनुकूलन गर्न नक्साबाट निर्माण गरिएका छन्।
यहाँ दुईवटा उदाहरणहरू छन् कि हामी कसरी $theme-colors
नक्सामा परिमार्जकहरू .alert
र .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);
}
उत्तरदायी
यी सास लूपहरू रङ नक्सामा मात्र सीमित छैनन्। तपाइँ तपाइँको कम्पोनेन्ट को उत्तरदायी भिन्नताहरु पनि उत्पन्न गर्न सक्नुहुन्छ। उदाहरणका लागि ड्रपडाउनहरूको हाम्रो उत्तरदायी पङ्क्तिबद्धता लिनुहोस् जहाँ हामीले मिडिया क्वेरी समावेश @each
गरी सास नक्साको लागि लुप मिक्स गर्छौं।$grid-breakpoints
// 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;
}
}
}
}
Should you modify your $grid-breakpoints
, your changes will apply to all the loops iterating over that map.
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
For more information and examples on how to modify our Sass maps and variables, please refer to the Sass section of the Grid documentation.
Creating your own
We encourage you to adopt these guidelines when building with Bootstrap to create your own components. We’ve extended this approach ourselves to the custom components in our documentation and examples. Components like our callouts are built just like our provided components with base and modifier classes.
<div class="callout">...</div>
In your CSS, you’d have something like the following where the bulk of the styling is done via .callout
. Then, the unique styles between each variant is controlled via modifier class.
// Base class
.callout {}
// Modifier classes
.callout-info {}
.callout-warning {}
.callout-danger {}
For the callouts, that unique styling is just a border-left-color
. When you combine that base class with one of those modifier classes, you get your complete component family: