الدالة `if` في SASS
تشرح هذه المقالة الدالة if في SASS۔
سنستعرض كل شيء من أساسيات الدالة if إلى التقنيات المتقدمة خطوة بخطوة۔
YouTube Video
الدالة if في SASS
الدالة if() هي دالة شرطية بسيطة توفرها SASS وترجع إحدى قيمتين بناءً على شرط منطقي (Boolean)۔ وهي مشابهة للمعامل الثلاثي (ternary) في JavaScript۔
الصياغة
الصياغة كما يلي:۔
1// if(condition, trueValue, falseValue)- إذا كانت
conditionتساوي true فسترجعtrueValue؛ وإذا كانت false فسترجعfalseValue۔
الاستخدام الأساسي
على سبيل المثال، يمكنك استخدام الدالة if() لتغيير ألوان الخلفية والنص اعتمادًا على ما إذا كانت السمة داكنة أم فاتحة۔
كود نموذج
1$theme: "dark";
2
3$background-color: if($theme == "dark", black, white);
4$text-color: if($theme == "dark", white, black);
5
6body {
7 background-color: $background-color;
8 color: $text-color;
9}- إذا كان المتغير
$themeيساوي"dark"، تصبح الخلفية سوداء مع نص أبيض؛ وإذا كان"light"، تصبح الخلفية بيضاء مع نص أسود۔
CSS المُولّد
1body {
2 background-color: black;
3 color: white;
4}- نظرًا لأن المتغير
$themeهو"dark"، فالخلفية سوداء مع نص أبيض۔
أوجه الاختلاف بين العبارة @if والدالة if()
يوفر Sass عبارة @if ودالة if() للتفريع الشرطي، لكنهما يُستخدمان لأغراض مختلفة۔
كود نموذج
1$theme: "dark";
2
3// `@if` statement: Compile-time branching (syntax level)
4$background-color: null;
5@if $theme == "dark" {
6 $background-color: black;
7} @else if $theme == "light" {
8 $background-color: white;
9} @else {
10 $background-color: gray;
11}
12
13// `if()` function: Returns a value (expression level)
14$text-color: if($theme == "dark", white, black);
15
16body {
17 background-color: $background-color;
18 color: $text-color;
19}- تتحكم عبارة
@ifفي الشيفرة التي تُخرَج عند ترجمة Sass۔ - أما دالة
if()فتعيد قيمة، وتُستخدم لتبديل القيم ديناميكيًا داخل التعابير۔
CSS المُولّد
1body {
2 background-color: black;
3 color: white;
4}- في هذا المثال، نظرًا لأن
$themeتساوي"dark"، يتم تطبيق خلفية سوداء ولون نص أبيض۔ - الاختلافان الرئيسيان هما أن عبارة
@ifتتحكم في البنية، وأن دالةif()تُعيد قيمة۔
استخدام دوال if متداخلة
عندما تحتاج إلى تفرعات معقدة، يمكنك تداخل دوال if۔
كود نموذج
1$theme: "custom";
2$custom-color: blue;
3
4$background-color: if(
5 $theme == "dark",
6 black,
7 if(
8 $theme == "light",
9 white,
10 $custom-color
11 )
12);
13
14body {
15 background-color: $background-color;
16}- إذا كان
$themeهو"dark"فسترجع اللون الأسود؛ وإذا كان"light"فسترجع اللون الأبيض؛ وإلا فسترجع القيمة الافتراضية ($custom-color)۔
CSS المُولّد
1body {
2 background-color: blue;
3}- وبما أن المتغير
$themeهوcustom، يكون لون الخلفية أزرقًا۔
حالات استخدام عملية
تبديل السمة
فيما يلي مثال يغير أنماط الأزرار بناءً على السمة۔
1$theme: "dark";
2
3.button {
4 background-color: if($theme == "dark", #333, #fff);
5 color: if($theme == "dark", #fff, #333);
6 border: 1px solid if($theme == "dark", #444, #ccc);
7}- هذا الكود مثال شرطي في SASS يبدل ألوان خلفية الزر ونصه وحدوده بناءً على قيمة المتغير
$theme۔ تُستخدم الدالةif()لضبط الأنماط ديناميكيًا للسمات الداكنة والفاتحة۔
CSS المُولّد
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- من خلال تبديل السمة، يمكنك تغيير التصميم العام بشكل موحد۔
مثال متقدم: ضبط تباين الألوان ديناميكيًا
لننظر إلى مثال يضبط لون النص تلقائيًا اعتمادًا على لون الخلفية۔
كود نموذج
1@use "sass:color";
2
3$background-color: #000;
4
5$text-color: if(
6 color.channel($background-color, "lightness", $space: hsl) > 50%,
7 black,
8 white
9);
10
11body {
12 background-color: $background-color;
13 color: $text-color;
14}- تُستخدم الدالة
color.channel()للحصول على إضاءة لون الخلفية (lightness)۔ إذا كانت تلك القيمة أكبر من50%، يُختار الأسود؛ وإن كانت أصغر، يُختار الأبيض كلون للنص، مما يُحسّن التباين مع الخلفية تلقائيًا۔
CSS المُولّد
1body {
2 background-color: #000;
3 color: white;
4}- باستخدام دالة
if()يمكنك تنفيذ أنماط مرنة تراعي قابلية الوصول في التصميم، مثل ضبط التباين۔
الدمج مع @function
يتيح استخدام دالة if داخل @function تصميم أنماط أكثر مرونة۔
كود نموذج
1@function theme-color($theme, $type) {
2 @return if(
3 $theme == "dark",
4 if(
5 $type == "background",
6 black,
7 white
8 ),
9 if(
10 $type == "background",
11 white,
12 black
13 )
14 );
15}
16
17body {
18 background-color: theme-color("dark", "background");
19 color: theme-color("dark", "text");
20}- يوضح هذا الكود استخدام
if()داخل@functionلإرجاع الألوان المناسبة بناءً على السمة ونوع اللون۔ يتيح ذلك تصميم أنماط متسقة وقابلة لإعادة الاستخدام لكل سمة۔
CSS المُولّد
1body {
2 background-color: black;
3 color: white;
4}- من خلال إنشاء واستخدام دوال مساعدة تستفيد من دالة
if()، يمكنك تحسين قابلية صيانة المشروع بأكمله۔
ملاحظات
-
لا يمكن استخدام الدالة
ifمع القيم الديناميكية لأن CSS لغة ثابتة بذاتها، تقوم دالةifبتحديد القيم وقت تجميع SASS۔ للمنطق الشرطي أثناء التشغيل، تحتاج إلى استخدام JavaScript۔ -
اجعل القابلية للقراءة أولوية لأن دوال
ifالمتداخلة قد تصبح معقدة وتضر بقابلية القراءة، يمكنك استخدام SASS@mixinو@functionحسب الحاجة لتنظيم الكود۔
الخاتمة
دالة if في SASS أداة قوية ترجع قيمًا مختلفة اعتمادًا على الشروط۔ وهي مفيدة ليس فقط للشرطيات البسيطة، بل أيضًا في العديد من السيناريوهات مثل تبديل السمة وإعداد الأنماط الديناميكية۔ ومع ذلك، عند التعامل مع شروط معقدة، انتبه للقابلية للقراءة واستفد من @mixin و@function لتحسين قابلية الصيانة۔
من خلال إتقان دالة if، يمكنك تحقيق تصميم أنماط أكثر كفاءة ومرونة۔
يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔