סאס
השתמש בקובצי המקור שלנו של Sass כדי לנצל משתנים, מפות, מיקסים ופונקציות כדי לעזור לך לבנות מהר יותר ולהתאים אישית את הפרויקט שלך.
השתמש בקובצי המקור של Sass כדי לנצל משתנים, מפות, מיקסים ועוד.
מבנה הקובץ
במידת האפשר, הימנע משינוי קבצי הליבה של Bootstrap. עבור Sass, זה אומר ליצור גיליון סגנונות משלך שמייבא את Bootstrap כדי שתוכל לשנות ולהרחיב אותו. בהנחה שאתה משתמש במנהל חבילות כמו npm, יהיה לך מבנה קובץ שנראה כך:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
אם הורדת את קובצי המקור שלנו ואינך משתמש במנהל חבילות, תרצה ליצור ידנית משהו דומה למבנה הזה, תוך שמירה על קבצי המקור של Bootstrap נפרדים משלך.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
מייבא
ב- שלך custom.scss
, תייבא את קובצי המקור Sass של Bootstrap. יש לך שתי אפשרויות: לכלול את כל Bootstrap, או לבחור את החלקים שאתה צריך. אנו מעודדים את האחרונים, אם כי שים לב שיש כמה דרישות ותלות בין הרכיבים שלנו. תצטרך גם לכלול קצת 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";
// 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
עם ההגדרה הזו, אתה יכול להתחיל לשנות כל אחד מהמשתנים והמפות של Sass ב- custom.scss
. אתה יכול גם להתחיל להוסיף חלקים של Bootstrap מתחת // Optional
לסעיף לפי הצורך. אנו ממליצים להשתמש בערימת הייבוא המלאה bootstrap.scss
מהקובץ שלנו כנקודת ההתחלה שלך.
ברירות מחדל משתנות
כל משתנה Sass ב-Bootstrap כולל את !default
הדגל המאפשר לך לעקוף את ערך ברירת המחדל של המשתנה ב-Sass משלך מבלי לשנות את קוד המקור של Bootstrap. העתק והדבק משתנים לפי הצורך, שנה את הערכים שלהם והסר את !default
הדגל. אם משתנה כבר הוקצה, אז הוא לא יוקצה מחדש על ידי ערכי ברירת המחדל ב-Bootstrap.
תוכל למצוא את הרשימה המלאה של המשתנים של Bootstrap ב scss/_variables.scss
. משתנים מסוימים מוגדרים ל- null
, משתנים אלה אינם מוציאים את המאפיין אלא אם כן הם מוחקים בתצורה שלך.
עקיפות משתנים חייבות לבוא לאחר ייבוא הפונקציות שלנו, אך לפני שאר הייבוא.
להלן דוגמה שמשנה את ה- background-color
ו color
עבור <body>
בעת ייבוא והידור Bootstrap באמצעות 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
חזור לפי הצורך עבור כל משתנה ב-Bootstrap, כולל האפשרויות הגלובליות למטה.
מפות ולופים
Bootstrap כולל קומץ של מפות Sass, צמדי ערכים מרכזיים המקלים על יצירת משפחות של CSS קשורות. אנו משתמשים במפות Sass עבור הצבעים שלנו, נקודות השבירה של הרשת ועוד. בדיוק כמו משתני Sass, כל מפות Sass כוללות את !default
הדגל וניתן לעקוף ולהרחיב.
כמה ממפות Sass שלנו מוזגות למפות ריקות כברירת מחדל. זה נעשה כדי לאפשר הרחבה קלה של מפת Sass נתונה, אך כרוך במחיר של הפיכת הסרת פריטים ממפה לקשה מעט יותר.
שנה מפה
כל המשתנים $theme-colors
במפה מוגדרים כמשתנים עצמאיים. כדי לשנות צבע קיים $theme-colors
במפה שלנו, הוסף את הדברים הבאים לקובץ Sass המותאם אישית שלך:
$primary: #0074d9;
$danger: #ff4136;
בהמשך, משתנים אלה מוגדרים $theme-colors
במפה של Bootstrap:
$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
. שים לב שעליך להכניס $theme-colors
בין הדרישות שלנו מיד לאחר הגדרתו ב variables
ולפני השימוש בו ב 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
מפתחות נדרשים
Bootstrap מניח את נוכחותם של כמה מפתחות ספציפיים בתוך מפות Sass כפי שהשתמשנו ולהרחיב אותם בעצמנו. בעת התאמה אישית של המפות הכלולות, אתה עלול להיתקל בשגיאות כאשר נעשה שימוש במפתח ספציפי של מפת Sass.
לדוגמה, אנו משתמשים במקשים primary
, success
, ו- מ עבור קישורים, לחצנים ומצבי טופס. החלפת הערכים של המפתחות הללו לא אמורה להציג בעיות, אך הסרתם עלולה לגרום לבעיות הידור של Sass. במקרים אלה, תצטרך לשנות את קוד Sass שעושה שימוש בערכים אלה.danger
$theme-colors
פונקציות
צבעים
לצד מפות Sass שברשותנו , ניתן להשתמש בצבעי ערכת נושא גם כמשתנים עצמאיים, כמו $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
אתה יכול להבהיר או להכהות צבעים עם Bootstrap's tint-color()
ופונקציות shade-color()
. פונקציות אלו יערבבו צבעים עם שחור או לבן, בניגוד לפונקציות המקוריות והפונקציות של Sass 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) , על המחברים לספק ניגודיות מינימלית של צבעי טקסט של 4.5:1 וניגודיות מינימלית ללא טקסט של 3:1 , למעט יוצאים מן הכלל.
כדי לעזור בזה, כללנו את color-contrast
הפונקציה ב-Bootstrap. הוא משתמש באלגוריתם יחס הניגודיות של WCAG לחישוב ספי ניגודיות המבוססים על זוהר יחסי בחלל sRGB
צבע כדי להחזיר אוטומטית צבע ניגודיות בהיר ( #fff
), כהה ( #212529
) או שחור ( #000
) בהתבסס על צבע הבסיס שצוין. פונקציה זו שימושית במיוחד עבור mixins או לולאות שבהן אתה יוצר מחלקות מרובות.
לדוגמה, כדי ליצור דוגמיות צבע $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`
}
בריחה מ-SVG
אנו משתמשים escape-svg
בפונקציה כדי להימלט מה- <
, >
והתווים #
עבור תמונות רקע SVG. בעת שימוש escape-svg
בפונקציה, יש לצטט כתובות URI של נתונים.
פונקציות הוספה וחיסור
אנו משתמשים בפונקציות add
ו subtract
כדי לעטוף את calc
פונקציית ה-CSS. המטרה העיקרית של פונקציות אלו היא למנוע שגיאות כאשר 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);
}
דוגמה שבה ה-calc אינו חוקי:
$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/
יש המון מיקסים שמניעים חלקים של Bootstrap וניתן להשתמש בהם גם בפרויקט משלך.
ערכות צבעים
שילוב קיצור עבור 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
}
}