יסודות SASS

יסודות SASS

מאמר זה מסביר את יסודות ה-SASS.

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

YouTube Video

יסודות SASS

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

?מה זה SASS

SASS היא שפה שמפשטת את כתיבת ה-CSS ומאפשרת עיצוב גמיש ועוצמתי יותר. SASS מציעה גם את תחביר ה-SCSS (Sassy CSS), הדומה לתחביר CSS רגיל. הנה דוגמה:.

דוגמה ל-SCSS

1$base-font: Arial, sans-serif;
2$bg-color: #f4f4f4;
3
4body {
5    font-family: $base-font;
6    background-color: $bg-color;
7}

דוגמה ל-CSS

1body {
2    font-family: Arial, sans-serif;
3    background-color: #f4f4f4;
4}

הגדרת SASS

כיצד להתקין

כדי להשתמש ב-SASS, תחילה התקן את Node.js ואז התקן את SASS עם הפקודה הבאה:.

1npm install -g sass

כיצד לקמפל

כדי לקמפל קבצי SASS (.scss או .sass) ל-CSS, השתמש בפקודה הבאה:.

1sass input.scss output.css

אפשר גם להשתמש באפשרות watch כדי לנטר שינויים בקבצים ולבצע הידור בזמן אמת.

משתנים

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

קוד דוגמה

1$primary-color: #3498db;
2$font-stack: 'Roboto', sans-serif;
3
4body {
5    color: $primary-color;
6    font-family: $font-stack;
7}
  • הקוד הזה משתמש במשתני SASS להגדרת צבעים ופונטים, ומשתמש בהם מחדש בתוך הסלקטור body כדי לשפר עקביות ותחזוקה.

תוצאה מקומפלת

1body {
2    color: #3498db;
3    font-family: 'Roboto', sans-serif;
4}

קינון

SASS משפר קריאות קוד בכך שמאפשר קיבוץ (קינון) של סלקטורים ב-CSS.

קוד דוגמה

 1nav {
 2    ul {
 3        list-style: none;
 4        margin: 0;
 5        padding: 0;
 6
 7        li {
 8            display: inline-block;
 9
10            a {
11                text-decoration: none;
12                color: #333;
13
14                &:hover {
15                    color: #3498db;
16                }
17            }
18        }
19    }
20}
  • הקוד הזה משתמש בהיררכיה מקוננת כדי להמחיש בצורה ויזואלית את מבנה הסגנונות.

תוצאה מקומפלת

 1nav ul {
 2    list-style: none;
 3    margin: 0;
 4    padding: 0;
 5}
 6
 7nav ul li {
 8    display: inline-block;
 9}
10
11nav ul li a {
12    text-decoration: none;
13    color: #333;
14}
15
16nav ul li a:hover {
17    color: #3498db;
18}

מיקסינים

מיקסינים מאפשרים לעשות שימוש חוזר בקוד בין מספר סלקטורים.

קוד דוגמה

 1@mixin border-radius($radius) {
 2    border-radius: $radius;
 3    -webkit-border-radius: $radius;
 4    -moz-border-radius: $radius;
 5}
 6
 7button {
 8    @include border-radius(10px);
 9}
10
11.card {
12    @include border-radius(5px);
13}
  • הקוד הזה מגדיר סגנון border-radius באמצעות @mixin ומשתמש בו מחדש עבור button ו-.card בעזרת @include, מה שמאפשר עיצוב יעיל ללא כפילויות.

תוצאה מקומפלת

 1button {
 2    border-radius: 10px;
 3    -webkit-border-radius: 10px;
 4    -moz-border-radius: 10px;
 5}
 6
 7.card {
 8    border-radius: 5px;
 9    -webkit-border-radius: 5px;
10    -moz-border-radius: 5px;
11}

ירושה (@extend)

באמצעות ירושה ניתן ליישם עיצובים קיימים על סלקטורים נוספים.

קוד דוגמה

 1%button-style {
 2    padding: 10px 20px;
 3    color: white;
 4    background-color: #3498db;
 5}
 6
 7button {
 8    @extend %button-style;
 9    border: none;
10}
11
12.link-button {
13    @extend %button-style;
14    text-decoration: none;
15}
  • הקוד הזה מגדיר סלקטור דמה %button-style ומשתמש ב-@extend כדי להחיל סגנונות משותפים על button ועל .link-button, ובכך לעודד שימוש חוזר ועקביות.

תוצאה מקומפלת

 1button, .link-button {
 2    padding: 10px 20px;
 3    color: white;
 4    background-color: #3498db;
 5}
 6
 7button {
 8    border: none;
 9}
10
11.link-button {
12    text-decoration: none;
13}

תנאים ולולאות

SASS תומכת בתנאים ולולאות ליצירה דינאמית של עיצובים.

דוגמה להצהרת תנאי

1$theme: dark;
2
3body {
4    background-color: if($theme == light, #fff, #333);
5    color: if($theme == light, #333, #fff);
6}
  • הקוד הזה משתמש בפונקציית ה-if של SASS כדי להחליף צבעי רקע וטקסט בהתאם לערך של $theme, וכך מאפשר יצירת סגנון דינמי באמצעות תנאים.

דוגמה ללולאה

1@for $i from 1 through 3 {
2    .column-#{$i} {
3        width: calc(100% / $i);
4    }
5}
  • הקוד הזה משתמש בלולאת @for של SASS ליצירת מחלקות דינמית מ-.column-1 עד .column-3.

תוצאה מקומפלת

 1body {
 2    background-color: #333;
 3    color: #fff;
 4}
 5
 6.column-1 {
 7    width: 100%;
 8}
 9
10.column-2 {
11    width: 50%;
12}
13
14.column-3 {
15    width: 33.3333%;
16}

פיצול וייבוא קבצים

SASS מאפשרת לפצל קבצים ולעשות בהם שימוש חוזר בעזרת @use או @import.

מבנה קבצים

styles/
  _variables.scss
  _mixins.scss
  main.scss

_variables.scss

1$primary-color: #3498db;

_mixins.scss

1@mixin flex-center {
2    display: flex;
3    justify-content: center;
4    align-items: center;
5}

main.scss

1@use 'variables';
2@use 'mixins';
3
4header {
5    background-color: variables.$primary-color;
6    @include mixins.flex-center;
7}

תוצאה מקומפלת

1header {
2  background-color: #3498db;
3  display: flex;
4  justify-content: center;
5  align-items: center;
6}

סיכום

שימוש ב-SASS מייעל את כתיבת ה-CSS ומשפר את התחזוקה והשימושיות החוזרת של הקוד.

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

YouTube Video