ساختارهای کنترل در SASS

در این بخش دستورالعمل های کنترل در SASS شامل if@ ، حلقه شرطی while@ ، حلقه بدون قید و شرط for@ و همچنین else@ آموزش داده می شود.

ساختارهای کنترل در SASS

ساختارهای کنترل در Sass

Sass یک زبان برنامه نویسی اعلانی یا declarative است، توسعه ای از CSS، نه یک زبان برنامه نویسی رویه ای یا procedural مانند جاوا اسکریپت. با وجود آن، برخی از قابلیت های محدود رویه ای از طریق دستورالعمل های کنترلی (control directives) خود دارد. دستورالعمل هایی که در این فصل به بررسی آن ها می پردازیم، این امکان را فراهم می کنند که style ها را تنها در صورتی که شرایط خاصی برآورده شده باشند، یا حلقه های چندتایی را در بخش هایی از کد Sass قرار دهید.

ساختار شرطی - if@

همانطور که انتظار دارید، دستور if@ در Sass و همراهان آن شامل else if@ و else@ ، به شما اجازه می دهند کد Sass را در خروجی CSS فقط در صورت رعایت شرایط خاص بگنجانید. سینتکس پایه ساده است:

دستورالعمل های کنترل در Sass

در اینجا یک مثال نشان داده شده است:

دستورالعمل های کنترل در Sass

از آنجایی که در این مثال مقدار عبارت Boolean که بعد از if@ آمده است true است، CSS به صورت زیر خروجی خواهد شد:

دستورالعمل کنترل if در SASS

می توانید بعد از عبارت بولی چندین عبارت را در داخل براکت ها قرار دهید، از جمله تست های if@ اضافی:

دستورالعمل کنترل if در SASS

که منجر به CSS زیر می شود:

دستورالعمل کنترل if در SASS

البته می توانید به تعداد دلخواه از دستورات if@ در یک بلوک کد استفاده کنید، و اگر شرایط مستقل باشند، این راه حل است. اما اغلب شما می خواهید "اگر چیزی درست است این را انجام دهید، در غیر این صورت آن را انجام دهید". اینجاست که دستورات else if@ و else@ وارد عمل می شوند.

هر دوی else if@ و else@ باید بعد از دستورالعمل if@ بیایند. شرط else if@ فقط در صورتی ارزیابی می شود که شرط if@ درست یا همان true باشد. عبارت else@ که هیچ شرطی نمی گیرد، فقط زمانی اجرا می شود که if@ و همه شرط های else if@ (در صورت وجود) نادرست یا false باشند. بیایید به چند نمونه نگاه کنیم.

مثال اول تقریباً معادل یک دستور سوئیچ جاوا اسکریپت (switch) است. عبارات داخل شرط اول که true ارزیابی می شود در CSS گنجانده می شود، همه چیزهای دیگر نادیده گرفته خواهد شد:

دستورالعمل کنترل if در SASS

آیا می توانید بفهمید که متن چه رنگی خواهد بود؟

دستورالعمل کنترل if در SASS

بهترین تمرین این است که همیشه یک بند else@را زمانی که در حال ساخت شرطی های پیچیده هستید قرار دهید. این تضمین می کند که چیزی خروجی خواهد شد، حتی اگر همه شرایط دیگر نادرست (false) باشند. این مثال همان نتیجه قبلی را دارد، اما برای هر مقدار $test کار خواهد کرد:

دستورالعمل کنترل if در SASS

ساختار while@

دستور if@ مجموعه ای از دستورات را یکبار بر اساس یک عبارت بولی اجرا می کند. از طرف دیگر، اگر می خواهید چندین بار دستورات را اجرا کنید، اما همچنان اجرای آنها را بر اساس یک شرط کنترل کنید، می توانید از دستور while@ استفاده کنید. همانطور که از نام آن پیداست، دستورالعمل while@ به تولید خروجی CSS توسط دستورات ادامه می دهد مادامی که شرط true است.

سینتکس دستور while@ بسیار شبیه به if@ است. فقط کلمه کلیدی را جایگزین کنید:

دستور حلقه شرطی while در SASS

تنها چیزی که باید مراقب آن باشید این است که اطمینان حاصل کنید که یک یا چند عبارتی که در حلقه ارزیابی می شوند، نتیجه شرط را تغییر می دهند. در غیر این صورت، transpiler به تولید خروجی CSS توسط عبارات ادامه می دهد تا زمانی که آن را به صورت دستی لغو کنید. بنابراین این کار را انجام ندهید: دستور { ... } while true@ بینهایت اجرا می شود!!!

در اینجا یک مثال بهتر (اگر نه بسیار مفید) آمده است:

دستور حلقه شرطی while در SASS

که منجر به CSS زیر می شود:

دستور حلقه شرطی while در SASS

حلقه for@

شما می توانید از دستور for@ برای اجرای یک گروه از دستورات به تعداد مشخص استفاده کنید. این دستور دو نوع دارد. اولین نوع آن که از کلمه کلیدی through استفاده می کند، دستورات را از <start> تا <end> اجرا می کند که شامل:

دستورحلقه بدون قید و شرط for در SASS

بنابراین، در مثال زیر، دستورات حلقه 10 بار اجرا می شوند. به استفاده از الحاق رشته ای (string interpolation) برای ارجاع به متغیر $i توجه کنید:

دستورحلقه بدون قید و شرط for در SASS

نتیجه این کد CSS زیر است:

نحوه کار با SASS

جایگزین کردن کلمه کلیدی through با to باعث انحصاری شدن حلقه می شود، یعنی زمانی که متغیر برابر با <end> باشد، اجرا نخواهد شد:

آموزش کاربردی SASS

منجر به یک قانون less style می شود:

دستورحلقه بدون قید و شرط for در SASS

مقادیر مشخص شده با <start> و <end> باید مقادیر اعشاری باشند، اما <start> نباید کوچکتر از <end> باشد. در غیر این صورت، مقدار متغیر به جای افزایش، کاهش می یابد:

دستورحلقه بدون قید و شرط for در SASS

این کد منجر به CSS زیر می شود:

دستورحلقه بدون قید و شرط for در SASS

each@

در نهایت، دستورالعمل each@ مجموعه ای از آیتم ها را در یک لیست (list) یا یک نقشه (map) اجرا می کند. برای چنین ساختار قدرتمندی، سینتکس کاملاً ساده است:

دستور each@ در SASS

مانند دستور for@، هر مقدار به متغیر به نوبه خود به ترتیب اختصاص داده می شود و می تواند در داخل حلقه ارجاع داده شود. بیایید با یک مثال ساده شروع کنیم:

دستور each@ در SASS

این کد منجر به CSS زیر می شود:

دستور each@ در SASS

شما همچنین می توانید یک لیست چند بعدی را با تعیین چندین متغیر به دستور each@ ارسال کنید، تکنیکی به نام تخصیص چندگانه یا multiple assignment :

دستور each@ در SASS

این کد منجر به CSS زیر می شود:

آموزش SASS

در نهایت، می توانید نقشه ای را به دستور each@ ارسال کنید. مجدداً از multiple assignment استفاده می کنید:

دستور each@ در SASS

که منجر به CSS زیر می شود:

دستور each@ در SASS
ساختارهای کنترلی در SASS ساختار شرطی if@ حلقه while حلقه for دستور each در SASS