קומבינטורים בהשבה

קומבינטורים בהשבה

מאמר זה מסביר על קומבינטורים בהשבה.

נבאר כיצד להשתמש בקומבינטורים בהשבה עם SASS ונספק דוגמת קוד שתסייע לך להבין צעד אחר צעד.

YouTube Video

קומבינטורים בהשבה

ב-SASS ניתן לכתוב ביעילות סלקטורים של CSS בהתבסס על קשרי הורה-ילד, אך יש לשים לב במיוחד להתייחס נכון לקומבינטורים כמו סלקטור צאצא וסלקטור שכן צמוד.

יסודות ההשבה

ב-SASS, על ידי השבת סלקטורים של ילד בתוך סלקטורים של הורה, ניתן לייצג את קשרי ההורה-ילד ב-CSS בצורה ברורה וקצרה.

דוגמה: השבה בסיסית

1.nav {
2    ul {
3        li {
4            color: blue;
5        }
6    }
7}

CSS מקומפל

1.nav ul li {
2    color: blue;
3}

יחוס לסלקטור הורה (&)

ה-& ב-SASS משמש ליחוס לסלקטור ההורה הנוכחי.

שילוב קומבינטורים ו-&

על ידי שימוש ב-&, ניתן לבנות סלקטורים גמישים.

דוגמה
1.card {
2    & > .title {
3        font-weight: bold;
4    }
5    & + .card {
6        margin-top: 20px;
7    }
8}
CSS מקומפל
1.card > .title {
2    font-weight: bold;
3}
4.card + .card {
5    margin-top: 20px;
6}

קיצור עבור &

ב־SASS, כאשר מפעיל משמש בתחילת בורר, הבורר ההורה מוכנס באופן משתמע, ולכן אפשר להשמיט את ה־&.

מקרים שבהם ניתן להשמיט

לדוגמה, כאשר כותבים + .item, SASS מפרש זאת באופן פנימי כ־& + .item ומייצר אוטומטית את הצירוף עם הבורר ההורה.

דוגמה
1.item {
2    + .item {
3        margin-top: 10px;
4    }
5    &--hover {
6        background-color: red;
7    }
8}
CSS מקומפל
1.item + .item {
2  margin-top: 10px;
3}
4.item--hover {
5  background-color: red;
6}

סקירה כללית של קומבינטורים

הקומבינטורים ב-CSS מגדירים את היחסים בין סלקטורים. הבאים הם הסוגים העיקריים של קומבינטורים.

  1. סלקטור צאצא (רווח) סלקטור צאצא מכוון לכל האלמנטים הצאצאים הנמצאים בתוך אלמנט הורה. דוגמה: .parent .child

  2. סלקטור ילד (> ) סלקטור ילד פונה רק לאלמנטים שהם ילדים ישירים. דוגמה: .parent > .child

  3. סלקטור שכן צמוד (+) סלקטור שכן צמוד פונה לאח הסמוך הבא מיידית אחריו. דוגמה: .sibling1 + .sibling2

  4. סלקטור אחים כללי (~) סלקטור אחים כללי מכוון לכל האחים שמופיעים לאחר מכן. דוגמה: .sibling1 ~ .sibling2

כיצד להשתמש בקומבינטורים ב-SASS

סלקטור צאצא (רווח)

בהשבה של SASS, סלקטור הצאצא (רווח) מיושם כברירת מחדל.

דוגמה
1.container {
2    .header {
3        .title {
4            font-size: 20px;
5        }
6    }
7}
CSS מקומפל
1.container .header .title {
2    font-size: 20px;
3}

סלקטור ילד (> )

אם ברצונך להשתמש בסלקטור ילד, כתוב במפורש > בקוד SASS שלך.

דוגמה
1.container {
2    & > .header {
3        & > .title {
4            font-size: 20px;
5        }
6    }
7}
CSS מקומפל
1.container > .header > .title {
2    font-size: 20px;
3}

סלקטור שכן צמוד (+)

לעיצוב האח הצמוד הבא מיד, השתמש ב-+.

דוגמה
1.item {
2    & + .item {
3        margin-top: 10px;
4    }
5}
CSS מקומפל
1.item + .item {
2    margin-top: 10px;
3}

סלקטור אחים כללי (~)

לעיצוב כל האחים הבאים באותו רמה, השתמש ב-~.

דוגמה
1.alert {
2    & ~ .alert {
3        border-top: 1px solid red;
4    }
5}
CSS מקומפל
1.alert ~ .alert {
2    border-top: 1px solid red;
3}

פסאודו-מחלקות ופסאודו-אלמנטים בהשבה

ניתן לכתוב בקלות פסאודו-מחלקות ופסאודו-אלמנטים גם ב-SASS.

דוגמה
1.button {
2    &:hover {
3        background-color: blue;
4    }
5    &::after {
6        content: '';
7        display: block;
8    }
9}
CSS מקומפל
1.button:hover {
2    background-color: blue;
3}
4.button::after {
5    content: '';
6    display: block;
7}

דוגמה מעשית

להלן דוגמה לסגנון מורכב המשלב מספר קומבינטורים.

קוד SASS
 1.menu {
 2    .menu-item {
 3        & > .submenu {
 4            display: none;
 5
 6            & > .submenu-item {
 7                font-size: 14px;
 8            }
 9        }
10        & + .menu-item {
11            margin-left: 15px;
12        }
13    }
14}
CSS מקומפל
1.menu .menu-item > .submenu {
2    display: none;
3}
4.menu .menu-item > .submenu > .submenu-item {
5    font-size: 14px;
6}
7.menu .menu-item + .menu-item {
8    margin-left: 15px;
9}

סיכום

אם תבין נכון את ההשבה והקומבינטורים ב-SASS, תוכל לכתוב CSS תמציתי וקריא יותר.

תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.

YouTube Video