सस
व्हेरिएबल्स, नकाशे, मिक्सिन्स आणि फंक्शन्सचा फायदा घेण्यासाठी आमच्या स्त्रोत Sass फाइल्सचा वापर करा ज्यामुळे तुम्हाला तुमचा प्रोजेक्ट जलद तयार करण्यात आणि सानुकूलित करण्यात मदत होईल.
व्हेरिएबल्स, नकाशे, मिक्सिन्स आणि अधिकचा लाभ घेण्यासाठी आमच्या स्त्रोत Sass फाइल्सचा वापर करा.
फाइल संरचना
जेव्हा शक्य असेल तेव्हा, बूटस्ट्रॅपच्या मुख्य फाइल्समध्ये बदल करणे टाळा. Sass साठी, याचा अर्थ बूटस्ट्रॅप आयात करणारी तुमची स्वतःची स्टाइलशीट तयार करणे म्हणजे तुम्ही त्यात सुधारणा आणि विस्तार करू शकता. तुम्ही एनपीएम सारखे पॅकेज मॅनेजर वापरत आहात असे गृहीत धरून, तुमच्याकडे अशी फाइल संरचना असेल जी यासारखी दिसते:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
तुम्ही आमच्या सोर्स फाइल्स डाउनलोड केल्या असतील आणि पॅकेज मॅनेजर वापरत नसाल, तर तुम्हाला बूटस्ट्रॅपच्या सोर्स फाइल्स तुमच्या स्वतःहून वेगळ्या ठेवून त्या स्ट्रक्चरसारखे काहीतरी मॅन्युअली सेटअप करायचे आहे.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
आयात करत आहे
तुमच्या custom.scss
मध्ये, तुम्ही बूटस्ट्रॅपच्या स्रोत Sass फाइल्स आयात कराल. तुमच्याकडे दोन पर्याय आहेत: सर्व बूटस्ट्रॅप समाविष्ट करा किंवा तुम्हाला आवश्यक असलेले भाग निवडा. आम्ही नंतरचे प्रोत्साहन करतो, तरीही लक्षात असू द्या की आमच्या घटकांमध्ये काही आवश्यकता आणि अवलंबित्व आहेत. आमच्या प्लगइनसाठी तुम्हाला काही JavaScript देखील समाविष्ट करणे आवश्यक आहे.
// 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";
@import "../node_modules/bootstrap/scss/root";
// 4. Include any optional Bootstrap CSS 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";
// 5. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
@import "../node_modules/bootstrap/scss/utilities/api";
// 6. Add additional custom code here
त्या सेटअपसह, तुम्ही तुमच्या मधील कोणतेही Sass व्हेरिएबल्स आणि नकाशे सुधारण्यास सुरुवात करू शकता custom.scss
. // Optional
आपण आवश्यकतेनुसार विभाग अंतर्गत बूटस्ट्रॅपचे भाग जोडणे देखील सुरू करू शकता . bootstrap.scss
तुमचा प्रारंभ बिंदू म्हणून आमच्या फाईलमधील संपूर्ण आयात स्टॅक वापरण्याची आम्ही शिफारस करतो .
व्हेरिएबल डीफॉल्ट
बूटस्ट्रॅपमधील प्रत्येक Sass व्हेरिएबलमध्ये !default
तुम्हाला बूटस्ट्रॅपचा सोर्स कोड न बदलता तुमच्या स्वतःच्या Sass मध्ये व्हेरिएबलचे डीफॉल्ट मूल्य ओव्हरराइड करण्याची परवानगी देणारा ध्वज समाविष्ट असतो. आवश्यकतेनुसार व्हेरिएबल्स कॉपी आणि पेस्ट करा, त्यांची मूल्ये सुधारा आणि !default
ध्वज काढा. जर व्हेरिएबल आधीच नियुक्त केले गेले असेल, तर ते बूटस्ट्रॅपमधील डीफॉल्ट मूल्यांद्वारे पुन्हा नियुक्त केले जाणार नाही.
तुम्हाला मध्ये बूटस्ट्रॅपच्या व्हेरिएबल्सची संपूर्ण यादी मिळेल scss/_variables.scss
. काही व्हेरिएबल्स वर सेट केले आहेत null
, हे व्हेरिएबल्स तुमच्या कॉन्फिगरेशनमध्ये ओव्हरराइड केल्याशिवाय प्रॉपर्टी आउटपुट करत नाहीत.
व्हेरिएबल ओव्हरराइड्स आमची फंक्शन्स इंपोर्ट केल्यानंतर, पण बाकीच्या इंपोर्टच्या आधी येणे आवश्यक आहे.
येथे एक उदाहरण आहे जे npm द्वारे बूटस्ट्रॅप आयात आणि संकलित करताना आणि background-color
बदलते :color
<body>
// 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";
@import "../node_modules/bootstrap/scss/root";
// Optional Bootstrap components here
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
खालील जागतिक पर्यायांसह, बूटस्ट्रॅपमधील कोणत्याही व्हेरिएबलसाठी आवश्यकतेनुसार पुनरावृत्ती करा.
नकाशे आणि लूप
बूटस्ट्रॅपमध्ये मूठभर Sass नकाशे, मुख्य मूल्य जोड्यांचा समावेश आहे ज्यामुळे संबंधित CSS ची कुटुंबे निर्माण करणे सोपे होते. आम्ही आमच्या रंगांसाठी, ग्रिड ब्रेकपॉइंट्स आणि अधिकसाठी Sass नकाशे वापरतो. Sass व्हेरिएबल्स प्रमाणेच, सर्व Sass नकाशांमध्ये !default
ध्वज समाविष्ट आहे आणि ते अधिलिखित आणि विस्तारित केले जाऊ शकतात.
आमचे काही Sass नकाशे डीफॉल्टनुसार रिक्त मध्ये विलीन केले आहेत. हे दिलेल्या Sass नकाशाच्या सहज विस्तारास अनुमती देण्यासाठी केले जाते, परंतु नकाशावरून आयटम काढणे थोडे अधिक कठीण बनवण्याच्या खर्चावर येते .
नकाशा सुधारित करा
नकाशातील सर्व व्हेरिएबल्स $theme-colors
स्टँडअलोन व्हेरिएबल्स म्हणून परिभाषित केले आहेत. आमच्या $theme-colors
नकाशात विद्यमान रंग सुधारण्यासाठी, तुमच्या सानुकूल Sass फाइलमध्ये खालील गोष्टी जोडा:
$primary: #0074d9;
$danger: #ff4136;
नंतर, हे व्हेरिएबल्स बूटस्ट्रॅपच्या $theme-colors
नकाशामध्ये सेट केले जातात:
$theme-colors: (
"primary": $primary,
"danger": $danger
);
नकाशात जोडा
$theme-colors
तुमच्या सानुकूल मूल्यांसह एक नवीन Sass नकाशा तयार करून आणि मूळ नकाशामध्ये विलीन करून, किंवा इतर कोणत्याही नकाशावर नवीन रंग जोडा . या प्रकरणात, आम्ही एक नवीन $custom-colors
नकाशा तयार करू आणि त्यात विलीन करू $theme-colors
.
// Create your own map
$custom-colors: (
"custom-color": #900
);
// Merge the maps
$theme-colors: map-merge($theme-colors, $custom-colors);
नकाशावरून काढा
किंवा इतर कोणत्याही नकाशावरून रंग काढण्यासाठी $theme-colors
, वापरा map-remove
. आमच्या आवश्यकता आणि पर्यायांमध्ये तुम्ही ते समाविष्ट केले पाहिजे याची जाणीव ठेवा
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
// Optional
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
आवश्यक की
बूटस्ट्रॅप Sass नकाशेमध्ये काही विशिष्ट की ची उपस्थिती गृहीत धरते कारण आम्ही या स्वतः वापरतो आणि विस्तारित करतो. तुम्ही समाविष्ट केलेले नकाशे सानुकूलित करता तेव्हा, विशिष्ट Sass नकाशाची की वापरली जात असताना तुम्हाला त्रुटी येऊ शकतात.
उदाहरणार्थ, आम्ही लिंक्स, बटणे आणि फॉर्म स्टेटसाठी , primary
, success
आणि danger
की वापरतो. $theme-colors
या की ची मूल्ये बदलल्याने कोणतीही समस्या उद्भवू नये, परंतु त्यांना काढून टाकल्याने Sass संकलन समस्या उद्भवू शकतात. या उदाहरणांमध्ये, तुम्हाला त्या मूल्यांचा वापर करणार्या Sass कोडमध्ये सुधारणा करणे आवश्यक आहे.
कार्ये
रंग
आमच्याकडे असलेल्या Sass नकाशांच्या पुढे , थीमचे रंग स्टँडअलोन व्हेरिएबल्स म्हणून देखील वापरले जाऊ शकतात, जसे की $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
tint-color()
तुम्ही बूटस्ट्रॅप आणि shade-color()
फंक्शन्ससह रंग हलका किंवा गडद करू शकता . lighten()
ही फंक्शन्स सास नेटिव्ह आणि फंक्शन्सच्या विपरीत, काळ्या किंवा पांढर्या रंगात रंग मिसळतील darken()
जे ठराविक प्रमाणात हलकेपणा बदलतील, ज्यामुळे अनेकदा इच्छित परिणाम होत नाही.
// 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));
}
सराव मध्ये, तुम्ही फंक्शनला कॉल कराल आणि रंग आणि वजन पॅरामीटर्समध्ये पास कराल.
.custom-element {
color: tint-color($primary, 10%);
}
.custom-element-2 {
color: shade-color($danger, 30%);
}
रंग कॉन्ट्रास्ट
कलर कॉन्ट्रास्टसाठी WCAG 2.0 प्रवेशयोग्यता मानकांची पूर्तता करण्यासाठी , लेखकांनी कमीत कमी 4.5:1 चे कॉन्ट्रास्ट गुणोत्तर प्रदान करणे आवश्यक आहे , अगदी काही अपवादांसह.
आम्ही बूटस्ट्रॅपमध्ये समाविष्ट केलेले अतिरिक्त कार्य म्हणजे रंग कॉन्ट्रास्ट फंक्शन, color-contrast
. निर्दिष्ट बेस कलरवर आधारित प्रकाश ( ), गडद ( ) किंवा काळा ( ) कॉन्ट्रास्ट रंग आपोआप परत करण्यासाठी कलरस्पेसमधील सापेक्ष ल्युमिनन्सवर आधारित कॉन्ट्रास्ट थ्रेशोल्डची गणना करण्यासाठी हे WCAG 2.0 अल्गोरिदम वापरते. हे फंक्शन विशेषतः मिक्सिन्स किंवा लूपसाठी उपयुक्त आहे जिथे तुम्ही एकाधिक वर्ग तयार करत आहात.sRGB
#fff
#212529
#000
उदाहरणार्थ, आमच्या $theme-colors
नकाशावरून कलर स्वॅच व्युत्पन्न करण्यासाठी:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-contrast($value);
}
}
हे एक-ऑफ कॉन्ट्रास्ट गरजांसाठी देखील वापरले जाऊ शकते:
.custom-element {
color: color-contrast(#000); // returns `color: #fff`
}
तुम्ही आमच्या कलर मॅप फंक्शन्ससह बेस कलर देखील निर्दिष्ट करू शकता:
.custom-element {
color: color-contrast($dark); // returns `color: #fff`
}
Escape SVG
आम्ही SVG पार्श्वभूमी प्रतिमांसाठी , आणि वर्ण escape-svg
सुटण्यासाठी फंक्शन वापरतो. फंक्शन वापरताना , डेटा URI उद्धृत करणे आवश्यक आहे.<
>
#
escape-svg
फंक्शन्स जोडा आणि वजा करा
CSS फंक्शन रॅप करण्यासाठी आम्ही add
आणि फंक्शन्स वापरतो . या फंक्शन्सचा प्राथमिक उद्देश हा आहे की जेव्हा “एकदहीन” मूल्य अभिव्यक्तीमध्ये दिले जाते तेव्हा त्रुटी टाळणे. गणितीयदृष्ट्या बरोबर असूनही, सर्व ब्राउझरमध्ये एरर मिळेल यासारख्या अभिव्यक्ती .subtract
calc
0
calc
calc(10px - 0)
कॅल्क वैध आहे याचे उदाहरण:
$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);
}
कॅल्क अवैध आहे ते उदाहरण:
$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);
}
मिक्सन्स
आमच्या scss/mixins/
निर्देशिकेत अनेक टन मिक्सन्स आहेत जे बूटस्ट्रॅपच्या भागांना सामर्थ्य देतात आणि ते तुमच्या स्वतःच्या प्रोजेक्टमध्ये देखील वापरले जाऊ शकतात.
रंग योजना
मीडिया क्वेरीसाठी शॉर्टहँड मिक्सिन , , आणि सानुकूल रंग योजनांच्या prefers-color-scheme
समर्थनासह उपलब्ध आहे .light
dark
@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
}
}