SASS Control Directives – משפטי תנאי

רוצים להרחיב את ה-mixin שלכם? למה שלא תתחילו לכתוב משפטי תנאי ב-SASS?

במאמר הקודם דיברנו על שימוש בארגומנטים ב-SASS mixin. במאמר הזה ניקח את ה-mixin אפילו מעט יותר רחוק ונדבר על בקרת זרימה ב-SASS. בקרת זרימה (בלעז Control Directives) זה שם מאד מאד מפוצץ לדברים שכל מתכנת משתמש בהם: משפטי תנאי ולולאות. מה שחשוב לי להבהיר ששימוש במשתני זרימה הוא באמת עניין למתכנתים. כלומר אם אתה גרפיקאי שמשתמש ב-SASS (וכל הכבוד לך על זה!), לא בטוח שתצטרך להשתמש בזה. אבל אם אתה גרפיקאי שבונה מערכת מורכבת ומבין קצת קוד, או מתכנת שבונה CSS Grid זו או אחרת שנשענת על SASS, המאמר הבא יהיה שימושי מאד עבורך. גם לאלו שנכנסים עמוק לתוך הקוד של COMPASS.

אז בואו ונדבר על משפט תנאי פשוט. תיאור המקרה – אני בונה mixin שמקבל פרמטר של גודל פונט, אם הגודל הוא גדול יותר מ-X, אז צבע הפונט יהיה שחור, אם הוא קטן יותר, אז הוא יהיה לבן. פשוט, לא? השאלה איך מממשים את זה. התשובה היא:


@mixin example($size) {
	@if $size > 10px {
		font-size: $size;
		color: black;
	} @else {
		font-size: $size;
		color: white;
	}
}

לא להבהל, זה די פשוט! קודם כל, אפשר לראות שמדובר ב-mixin רגיל עם ארגומנט אחד מהסוג שדיברנו עליו במאמר הקודם. מה שמיוחד פה הוא משפט התנאי שהוא נורא נורא פשוט – אני כותב if@ ואז את התנאי (במקרה הזה, הארגומנט יותר גדול מ-10px) ואז סוגריים מסולסלות שמכילות את מה שיודפס אם התנאי מתמלא. אני גם טורח לכתוב else@ שמיד לאחריו יש סוגריים מסולסלות שמכילות את מה שיודפס אם התנאי לא יתמלא.

הנה הדוגמה החיה – ה-mixin שלנו ושתי קריאות:


@mixin example($size) {
	@if $size > 10px {
		font-size: $size;
		color: black;
	} @else {
		font-size: $size;
		color: white;
	}
}

.foo {
  @include example($size: 5px);
}

.bar {
  @include example($size: 15px);
}

זה יקומפל אל:


.foo {
  font-size: 5px;
  color: white;
}

.bar {
  font-size: 15px;
  color: black;
}

מתכנתים מנוסים יבואו ויגידו – "רגע אחד! איך בדיוק SASS יודע ש-15px גדול יותר מ-10px???". התשובה היא ש-SASS יודעת לבצע המרות ולא חייבים להשתמש במשתנים נומריים. כן כן! אני יכול גם לצורך העניין לבצע את הקריאה הבאה:


.foo {
  @include example($size: 5px);
}

.bar {
  @include example($size: 9pt);
}


האם SASS תדע ש-9pt יותר גדול מ-10px ותדפיס את מה שצריך להדפיס? התשובה היא: כן. התוצאה של הקריאה לעיל תהיה:


.foo {
  font-size: 5px;
  color: white;
}

.bar {
  font-size: 9pt;
  color: black;
}

ותודו שזה לא רק גאוני במידה מסוימת, אלא חוסך לא מעט כאב ראש, במיוחד אם אתם משתמשים בגדלים שונים מכל מיני סיבות.

אפשר להשתמש בתנאים יותר מורכבים וב- if else לצורך העניין. למשל:


@mixin example($size) {
	@if $size >= 10px {
		font-size: $size;
		color: black;
	} @else if $size == 9px{
		font-size: $size;
		color: blue;
	}
	@else {
		font-size: $size;
		color: white;
	}
}

שימו לב שהשתמשתי כאן בelse if וגם במשפט תנאי של == ושל גדול שווה.

במאמר הבא אנו נמשיך לדון על לולאות ב-SASS.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

להריץ ממשק של open-webui על הרספברי פיי

להפעיל ממשק של צ׳אט ג׳יפיטי שאפשר לגשת אליו מכל מחשב ברשת הביתית על רספברי פיי עם מודל בשם tinydolphin שרץ על רספברי פיי.

תמונה של הבית הלבן עם מחשוב ענן וטקסט: FEDRAMP
פתרונות ומאמרים על פיתוח אינטרנט

FedRAMP & FIPS מבוא למתחילים

פרק מיוחד, לצד הקלטה של פרק של עושים תוכנה על אחת התקינות החשובות ביותר עבור חברות שסביר להניח שלא הכרתם

תמונת תצוגה של מנעול על מחשב
פתרונות ומאמרים על פיתוח אינטרנט

הגנה מפני XSS עם Trusted Types

תכונה ב-CSP שמאפשרת מניעה כמעט הרמטית להתקפות XSS שכל מפתח ווב צריך להכיר וכדאי שיכיר.

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

גלילה לראש העמוד