Theming Bootstrap
התאם אישית את Bootstrap 4 עם משתני Sass המובנים החדשים שלנו להעדפות סגנון גלובליות לעיצוב קל ושינויי רכיבים.
ב-Bootstrap 3, עיצוב הנושא הונע בעיקר על ידי עקיפות משתנות ב- LESS, CSS מותאם אישית וגיליון סגנונות נפרד שכללנו dist
בקבצים שלנו. עם קצת מאמץ, אפשר לעצב מחדש לחלוטין את המראה של Bootstrap 3 מבלי לגעת בקבצי הליבה. Bootstrap 4 מספק גישה מוכרת, אך מעט שונה.
כעת, עיצוב הנושא מתבצע על ידי משתני Sass, מפות Sass ו-CSS מותאם אישית. אין עוד גיליון סגנונות ייעודי בנושא; במקום זאת, תוכל להפעיל את ערכת הנושא המובנית כדי להוסיף מעברי צבע, צללים ועוד.
השתמש בקובצי המקור של Sass כדי לנצל משתנים, מפות, מיקסים ועוד.
במידת האפשר, הימנע משינוי קבצי הליבה של Bootstrap. עבור Sass, זה אומר ליצור גיליון סגנונות משלך שמייבא את Bootstrap כדי שתוכל לשנות ולהרחיב אותו. בהנחה שאתה משתמש במנהל חבילות כמו npm, יהיה לך מבנה קובץ שנראה כך:
אם הורדת את קובצי המקור שלנו ואינך משתמש במנהל חבילות, תרצה להגדיר ידנית משהו דומה למבנה הזה, ולהשאיר את קבצי המקור של Bootstrap נפרדים משלך.
ב- שלך custom.scss
, תייבא את קובצי המקור Sass של Bootstrap. יש לך שתי אפשרויות: לכלול את כל Bootstrap, או לבחור את החלקים שאתה צריך. אנו מעודדים את האחרונים, אם כי שים לב שיש כמה דרישות ותלות בין הרכיבים שלנו. תצטרך גם לכלול קצת JavaScript עבור התוספים שלנו.
עם ההגדרה הזו, אתה יכול להתחיל לשנות כל אחד מהמשתנים והמפות של Sass ב- custom.scss
. אתה יכול גם להתחיל להוסיף חלקים של Bootstrap מתחת // Optional
לסעיף לפי הצורך. אנו ממליצים להשתמש בערימת הייבוא המלאה bootstrap.scss
מהקובץ שלנו כנקודת ההתחלה שלך.
כל משתנה Sass ב-Bootstrap 4 כולל את !default
הדגל המאפשר לך לעקוף את ערך ברירת המחדל של המשתנה ב-Sass שלך מבלי לשנות את קוד המקור של Bootstrap. העתק והדבק משתנים לפי הצורך, שנה את הערכים שלהם והסר את !default
הדגל. אם משתנה כבר הוקצה, אז הוא לא יוקצה מחדש על ידי ערכי ברירת המחדל ב-Bootstrap.
עקיפות משתנים בתוך אותו קובץ Sass יכולות לבוא לפני או אחרי משתני ברירת המחדל. עם זאת, בעת עקיפת קבצי Sass, העקיפות שלך חייבות להגיע לפני שאתה מייבא את קבצי Sass של Bootstrap.
להלן דוגמה שמשנה את ה- background-color
ו color
עבור <body>
בעת ייבוא והידור Bootstrap באמצעות npm:
חזור לפי הצורך עבור כל משתנה ב-Bootstrap, כולל האפשרויות הגלובליות למטה.
Bootstrap 4 כולל קומץ של מפות Sass, צמדי ערכים מרכזיים המקלים על יצירת משפחות של CSS קשורות. אנו משתמשים במפות Sass עבור הצבעים שלנו, נקודות השבירה של הרשת ועוד. בדיוק כמו משתני Sass, כל מפות Sass כוללות את !default
הדגל וניתן לעקוף ולהרחיב.
כמה ממפות Sass שלנו מוזגות למפות ריקות כברירת מחדל. זה נעשה כדי לאפשר הרחבה קלה של מפת Sass נתונה, אך כרוך במחיר של הפיכת הסרת פריטים ממפה לקשה מעט יותר.
כדי לשנות צבע קיים $theme-colors
במפה שלנו, הוסף את הדברים הבאים לקובץ Sass המותאם אישית שלך:
כדי להוסיף צבע חדש ל- $theme-colors
, הוסף את המפתח והערך החדשים:
כדי להסיר צבעים מ- $theme-colors
, או מכל מפה אחרת, השתמש ב map-remove
:
Bootstrap מניח את נוכחותם של כמה מפתחות ספציפיים בתוך מפות Sass כפי שהשתמשנו ולהרחיב אותם בעצמנו. בעת התאמה אישית של המפות הכלולות, אתה עלול להיתקל בשגיאות כאשר נעשה שימוש במפתח ספציפי של מפת Sass.
לדוגמה, אנו משתמשים במקשים primary
, success
, ו- מ עבור קישורים, לחצנים ומצבי טופס. החלפת הערכים של המפתחות הללו לא אמורה להציג בעיות, אך הסרתם עלולה לגרום לבעיות הידור של Sass. במקרים אלה, תצטרך לשנות את קוד Sass שעושה שימוש בערכים אלה.danger
$theme-colors
Bootstrap משתמש במספר פונקציות של Sass, אך רק תת-קבוצה מתאימה לעיצוב כללי. כללנו שלוש פונקציות לקבלת ערכים ממפות הצבע:
אלה מאפשרים לך לבחור צבע אחד ממפת Sass בדומה לאופן שבו אתה משתמש במשתנה צבע מ-v3.
יש לנו גם פונקציה נוספת לקבלת רמה מסוימת של צבע $theme-colors
מהמפה. ערכי רמה שליליים יבהירו את הצבע, בעוד שרמות גבוהות יותר יחשיכו.
בפועל, היית קורא לפונקציה ומעביר שני פרמטרים: שם הצבע מ- $theme-colors
(למשל, ראשוני או סכנה) ורמה מספרית.
ניתן להוסיף פונקציות נוספות בעתיד או Sass מותאם אישית משלך כדי ליצור פונקציות ברמה עבור מפות נוספות של Sass, או אפילו גנרית אם תרצה להיות יותר מילולי.
פונקציה נוספת שאנו כוללים ב-Bootstrap היא פונקציית ניגודיות הצבע, color-yiq
. הוא מנצל את מרחב הצבעים YIQ כדי להחזיר אוטומטית צבע ניגודי בהיר ( #fff
) או כהה ( #111
) בהתבסס על צבע הבסיס שצוין. פונקציה זו שימושית במיוחד עבור mixins או לולאות שבהן אתה יוצר מחלקות מרובות.
לדוגמה, כדי ליצור דוגמיות צבע $theme-colors
מהמפה שלנו:
זה יכול לשמש גם לצרכי ניגודיות חד פעמיים:
אתה יכול גם לציין צבע בסיס עם פונקציות מפת הצבע שלנו:
התאם אישית את Bootstrap 4 עם קובץ המשתנים המותאמים אישית המובנה שלנו והחלף בקלות העדפות CSS גלובליות עם $enable-*
משתני Sass חדשים. עוקף ערך של משתנה והידור מחדש npm run test
לפי הצורך.
אתה יכול למצוא ולהתאים אישית משתנים אלה עבור אפשרויות עיקריות גלובליות _variables.scss
בקובץ שלנו.
מִשְׁתַנֶה | ערכים | תיאור |
---|---|---|
$spacer |
1rem (ברירת מחדל), או כל ערך > 0 |
מציין את ערך ה-spacer המוגדר כברירת מחדל ליצירת תוכניות ה- spacer שלנו . |
$enable-rounded |
true (ברירת מחדל) אוfalse |
מאפשר border-radius סגנונות מוגדרים מראש ברכיבים שונים. |
$enable-shadows |
true או false (ברירת מחדל) |
מאפשר box-shadow סגנונות מוגדרים מראש ברכיבים שונים. |
$enable-gradients |
true או false (ברירת מחדל) |
מאפשר מעברי צבע מוגדרים מראש באמצעות background-image סגנונות ברכיבים שונים. |
$enable-transitions |
true (ברירת מחדל) אוfalse |
מאפשר transition s מוגדרים מראש ברכיבים שונים. |
$enable-hover-media-query |
true או false (ברירת מחדל) |
הוצא משימוש |
$enable-grid-classes |
true (ברירת מחדל) אוfalse |
מאפשר יצירת מחלקות CSS עבור מערכת הרשת (למשל, .container , .row , .col-md-1 וכו'). |
$enable-caret |
true (ברירת מחדל) אוfalse |
מפעיל אלמנט פסאודו ב- .dropdown-toggle . |
$enable-print-styles |
true (ברירת מחדל) אוfalse |
מאפשר סגנונות לייעול הדפסה. |
רבים מהרכיבים והכלים השונים של Bootstrap בנויים באמצעות סדרה של צבעים המוגדרים במפת Sass. ניתן להעביר את המפה הזו בלולאה ב-Sass כדי ליצור במהירות סדרה של חוקים.
כל הצבעים הזמינים ב-Bootstrap 4, זמינים כמשתני Sass ומפת Sass scss/_variables.scss
בקובץ שלנו. זה יורחב במהדורות קטנות שלאחר מכן כדי להוסיף גוונים נוספים, בדומה לפלטת גווני האפור שאנו כבר כוללים.
כך תוכל להשתמש באלו ב-Sass שלך:
שיעורי עזר צבע זמינים גם עבור הגדרה color
ו background-color
.
בעתיד, נשאף לספק מפות ומשתנים של Sass עבור גוונים של כל צבע כפי שעשינו עם צבעי גווני האפור שלהלן.
אנו משתמשים בתת-קבוצה של כל הצבעים כדי ליצור פלטת צבעים קטנה יותר ליצירת ערכות צבעים, הזמינות גם כמשתני Sass ומפת Sass scss/_variables.scss
בקובץ שלנו.
קבוצה נרחבת של משתנים אפורים ומפת Sass scss/_variables.scss
עבור גוונים עקביים של אפור בכל הפרויקט שלך.
בתוך _variables.scss
, תמצא את משתני הצבע שלנו ואת מפת Sass. הנה דוגמה $colors
למפת Sass:
הוסף, הסר או שנה ערכים בתוך המפה כדי לעדכן את אופן השימוש בהם ברכיבים רבים אחרים. לרוע המזל בשלב זה, לא כל רכיב משתמש במפת Sass זו. עדכונים עתידיים ישאפו לשפר זאת. עד אז, תכנן לעשות שימוש ${color}
במשתנים ובמפת Sass הזו.
רבים מהרכיבים ומכלי השירות של Bootstrap בנויים עם @each
לולאות שחוזרות על פני מפת Sass. זה מועיל במיוחד ליצירת גרסאות של רכיב על ידינו $theme-colors
ויצירת גרסאות מגיבות עבור כל נקודת שבירה. כשתתאים אישית את מפות Sass אלה והידור מחדש, תראה אוטומטית את השינויים שלך משתקפים בלולאות אלה.
רבים מהרכיבים של Bootstrap בנויים בגישת מחלקה של בסיס-שינוי. משמעות הדבר היא שחלק הארי של הסגנון כלול במחלקה בסיסית (למשל, .btn
) בעוד שווריאציות בסגנון מוגבלות למחלקות משנה (למשל, .btn-danger
). מחלקות השינוי הללו בנויות $theme-colors
מהמפה כדי לבצע התאמה אישית של המספר והשם של מחלקות השינוי שלנו.
הנה שתי דוגמאות לאופן שבו אנו בלולאה על $theme-colors
המפה כדי ליצור שינויים .alert
לרכיב ולכל .bg-*
כלי השירות הרקע שלנו.
לולאות Sass אלה אינן מוגבלות גם למפות צבעוניות. אתה יכול גם ליצור וריאציות רספונסיביות של הרכיבים או כלי השירות שלך. קח לדוגמא את כלי עזר ליישור הטקסט הרספונסיבי שלנו שבהם אנו מערבבים @each
לולאה עבור $grid-breakpoints
מפת Sass עם שאילתת מדיה כוללת.
אם תצטרך לשנות את $grid-breakpoints
, השינויים שלך יחולו על כל הלולאות החוזרות על המפה הזו.
Bootstrap 4 כולל בערך שני תריסר מאפייני CSS מותאמים אישית (משתנים) ב-CSS המהידור שלו. אלה מספקים גישה קלה לערכים נפוצים כמו צבעי הנושא, נקודות השבירה וערימות הגופנים העיקריות שלנו בעת עבודה ב-Inspector של הדפדפן, ארגז חול של קוד או אב טיפוס כללי.
להלן המשתנים שאנו כוללים (שימו לב שה- :root
חובה). הם נמצאים _root.scss
בקובץ שלנו.
משתני CSS מציעים גמישות דומה למשתנים של Sass, אך ללא צורך בהידור לפני ההגשה לדפדפן. לדוגמה, כאן אנו מאפסים את סגנונות הגופן והקישור של הדף שלנו עם משתני CSS.
אתה יכול גם להשתמש במשתני נקודת השבירה שלנו בשאילתות המדיה שלך: