מפות ב־SASS
מאמר זה מסביר על מפות ב־SASS.
נסביר מהבסיס ועד שימוש מתקדם במפות של SASS, ונביא דוגמאות מעשיות.
YouTube Video
מפות ב־SASS
מהי מפה (Map) ב־SASS?
מפה ב־SASS היא מבנה נתונים שמכיל זוגות של מפתחות וערכים, בדומה לאובייקטים ב־JavaScript או מילונים ב־Python. על ידי שימוש במפות ב־SASS, ניתן לנהל עיצובים מורכבים בצורה תמציתית ולשפר את תחזוקת הקוד.
תחביר בסיסי של מפות
מפות ב־SASS מוגדרות באמצעות () סוגריים עגולים. התחביר הוא כך:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);
לדוגמה, כדי ליצור מפה לניהול ערכות צבעים, ניתן להגדיר אותה כך:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
קבלת ערכים ממפה
ב־SASS, נעזרים בפונקציה map.get() כדי לשלוף ערך ממפה.
דוגמה לשימוש:
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8.button {
9 background-color: map.get($colors, primary);
10}
פלט:
1.button {
2 background-color: #3498db;
3}
- הקוד הזה שולף את ערך הצבע primary ממפת $colors ומשייך אותו כצבע הרקע של הכפתור.
הגדרת מפתחות וערכים במפה
באמצעות הפונקציה map.set() אפשר להקצות ערך חדש למפתח מסוים. אם המפתח כבר קיים, הערך שלו יוחלף.
שימוש לדוגמה
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8// set danger color
9$updated-colors: map.set($colors, danger, #e74c3c);
10
11.button-danger {
12 background-color: map.get($updated-colors, danger);
13}
- הקוד הזה מוסיף את המפתח danger למפה ומגדיר את הערך שלו כצבע הרקע של הכפתור.
פלט
1.button-danger {
2 background-color: #e74c3c;
3}
הסרת מפתחות ממפה
באמצעות הפונקציה map.remove() ניתן להסיר מפתח מסוים ואת ערכו מהמפה.
שימוש לדוגמה
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71,
6 danger: #e74c3c
7);
8
9// remove danger color
10$reduced-colors: map.remove($colors, danger);
11
12.button-primary {
13 background-color: map.get($reduced-colors, primary);
14}
15
16.button-danger {
17 background-color: map.get($reduced-colors, danger);
18}
- הקוד הזה מסיר את המפתח danger מהמפה, ולכן צבע הרקע של button-danger יהיה null.
פלט
1.button-primary {
2 background-color: #3498db;
3}
הוספת מפתחות וערכים למפה
באמצעות הפונקציה map.merge() אפשר להוסיף מפתחות וערכים חדשים למפה קיימת.
שימוש לדוגמה
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8$extended-colors: map.merge($colors, (danger: #e74c3c));
9
10.button-danger {
11 background-color: map.get($extended-colors, danger);
12}
- הקוד הזה מוסיף את המפתח danger למפת SASS קיימת ומגדיר את הצבע שלו כרקע של הכפתור.
פלט
1.button-danger {
2 background-color: #e74c3c;
3}
הוספת מספר מפתחות וערכים למפה
באמצעות הפונקציה map.merge() אפשר להוסיף מספר מפתחות וערכים חדשים למפה קיימת בבת אחת.
שימוש לדוגמה
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8$extended-colors: map.merge($colors, (
9 danger: #e74c3c,
10 warning: #f39c12,
11 info: #8e44ad
12));
13
14.button-danger {
15 background-color: map.get($extended-colors, danger);
16}
- הקוד הזה מוסיף כמה מפתחות וערכים יחדיו למפת SASS קיימת.
בדיקת קיום מפתח במפה
הפונקציה map.has-key() מאפשרת לבדוק אם מפתח מסוים קיים במפה.
שימוש לדוגמה
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.has-key($colors, primary); // true
9@debug map.has-key($colors, danger); // false
שליפת כל המפתחות או הערכים ממפה
שליפת כל המפתחות
באמצעות הפונקציה map.keys() ניתן לשלוף את כל המפתחות.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)
שליפת כל הערכים
באמצעות הפונקציה map.values() תוכלו לשלוף את כל הערכים.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)
לולאה על פני מפה
ב־SASS ניתן להשתמש ב־@each כדי לעבור על המפה.
שימוש לדוגמה
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $color in $colors {
8 .color-#{$name} {
9 background-color: $color;
10 }
11}
- הקוד הזה עובר על כל מפתח וערך במפת SASS ויוצר אוטומטית מחלקה עבור כל צבע.
פלט
1.color-primary {
2 background-color: #3498db;
3}
4
5.color-secondary {
6 background-color: #2ecc71;
7}
8
9.color-danger {
10 background-color: #e74c3c;
11}
עבודה עם מפות מקוננות
ניתן ליצור גם מבנה של מפות מקוננות. במצב זה משתמשים בפונקציות map.get() מקוננות.
שימוש לדוגמה
1@use "sass:map";
2
3$themes: (
4 light: (
5 background: #ffffff,
6 text: #000000
7 ),
8 dark: (
9 background: #000000,
10 text: #ffffff
11 )
12);
13
14body {
15 background-color: map.get(map.get($themes, light), background);
16 color: map.get(map.get($themes, light), text);
17}
- הקוד הזה שולף את צבעי הרקע והטקסט עבור ערכת light ממפת SASS מקוננת ומגדיר אותם על ה־body.
פלט
1body {
2 background-color: #ffffff;
3 color: #000000;
4}
שימוש במפות: עיצוב רספונסיבי
באמצעות מפות, אפשר לנהל בקלות media queries ולעצב רספונסיבית.
שימוש לדוגמה
1$breakpoints: (
2 small: 480px,
3 medium: 768px,
4 large: 1024px
5);
6
7@each $label, $size in $breakpoints {
8 @media (max-width: $size) {
9 .container-#{$label} {
10 width: 100%;
11 }
12 }
13}
- הקוד הזה משתמש במפת SASS כדי ליצור באופן אוטומטי מחלקות של קונטיינר רספונסיבי לכל גודל מסך.
פלט
1@media (max-width: 480px) {
2 .container-small {
3 width: 100%;
4 }
5}
6
7@media (max-width: 768px) {
8 .container-medium {
9 width: 100%;
10 }
11}
12
13@media (max-width: 1024px) {
14 .container-large {
15 width: 100%;
16 }
17}
סיום
מפות ב־SASS הן כלי חזק לארגון גיליון הסגנונות, להגדלת הגמישות ולשימוש חוזר. ניתן להשתמש בהן במצבים רבים, כמו ניהול ערכים, לולאות ויישום עיצוב רספונסיבי.
תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.