لینکهای مفید برای شرکت در مسابقه:
Node v14.4.0
استفاده میکند.در طول مسابقه میتوانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.
امین تازه در دیجیکالا جذب شده و از آنجایی که خیلی به چالش های فنی علاقهمند است، بابک و فرزاد تصمیم گرفتهاند از او بخواهند راهحلی برای یک مشکل پیدا کند. به امین در یافتن راهحل کمک کنید.
پروژهی اولیه را از این لینک دانلود کنید.
امین باید تابعی با نام purgeClassNames
پیادهسازی کنه که تعداد آرگومانهاش متغیر است. مثال:
این تابع باید کلاسهای مشابه را بر اساس اولویت حذف کند، یعنی کلاسهایی که زودتر به تابع پاس داده شدهاند اولویت کمتری دارند. مثلاً خروجی مثال بالا باید بهصورت زیر باشد:
در مثال فوق، کلاس m-5
با کلاس m-12
جایگزین میشود، زیرا m-12
دیرتر آمده و اولویت بیشتری دارد. کلاس d-block
بدون هیچ تغییری به خروجی منتقل میشود.
margin
🔗m-n
: مارجین از همهی جهات به اندازهی ml-n
: مارجین از چپmr-n
: مارجین از راستmb-n
: مارجین از پایینmt-n
: مارجین از بالاmy-n
: مارجین از بالا و پایینmx-n
: مارجین از چپ و راستدر توضیحات بالا، میتواند هر عددی باشد. مثال:
m-10
mr-999
mx-11
margin
:🔗ورودی ۱:
خروجی ۱:
کلاس m-5
میتواند به my-5 mx-5
تجزیه شود. بنابراین my-2
جایگزین my-5
شده و خروجی برابر با my-2 mx-5
خواهد بود.
ورودی ۲:
خروجی ۲:
ورودی ۳:
خروجی ۳:
نکته: m-n
میتواند به mx-n
و my-n
تجزیه شود. کلاس mx-n
نیز میتواند به mr-n
و ml-n
تجزیه شود. به همین ترتیب، کلاس my-n
نیز شامل mt-n
و mb-n
میشود. در این مثالها، هر عددی میتواند باشد.
padding
🔗قواعد کلاس margin
برای این کلاس هم وجود دارند. مثال:
pr-6
یا p-5
یا py-3
و...
display
🔗ساختار کلاس به صورت d-OPTION
است که OPTION
میتواند یکی از مقادیر زیر باشد:
flex
inline
inline-flex
block
inline-block
مثال:
d-block
d-inline
d-flex
display
:🔗ورودی:
خروجی:
overflow
🔗ساختار کلاس overflow
بهصورت زیر است:
overflow-OPTION
در تمامی جهاتoverflow-y-OPTION
درجهت محور yoverflow-x-OPTION
در جهت محور xدر مثالهای بالا، OPTION
میتواند یکی از مقادیر زیر باشد:
hidden
visible
scroll
auto
none
overflow
:🔗ورودی ۱:
خروجی ۱:
ورودی ۲:
خروجی ۲:
ورودی ۳:
خروجی ۳:
نکته: کلاس overflow-OPTION
میتواند به کلاسهای overflow-x-OPTION
و overflow-y-OPTION
تجزیه شود.
نقطه شکستها اندازه های تعریف شدهای هستند که به ما این امکان را میدهند تا یک کلاس را فقط در یک اندازهی مشخص اعمال کنیم.
هر کلاس میتواند فقط در یک breakpoint خاص فعال باشد، برای مثال: lg:mr-2
فقط در breakpoint lg فعال است. تمامی کلاس هایی که بالا معرفی شدند باید قابلیت استفاده با breakpoints را داشته باشند.
لیست نقطه شکست های موجود:
xs
sm
md
lg
ورودی ۱:
خروجی ۱:
همانطور که مشاهده میکنید، کلاسهایی که دارای breakpoint هستند، بر روی کلاس های معمولی اثری ندارند.
ورودی ۲:
خروجی ۲:
همانطور که مشاهده میکنید، breakpoint های متفاوت نیز بر روی یکدیگر تاثیر ندارند.
purgeClassNames
اهمیتی ندارد.purgeClassNames
باید یک رشته شامل کلاسها باشد که با استفاده از فاصله (space) از هم جدا شدهاند.purgeClassNames
داده شود که در لیست کلاسهای بالا تعریف نشده بود، شما باید آن کلاس را بدون تغییر و به صورت مستقیم به خروجی ارسال کنید.script.js
هستید.پس از پیادهسازی موارد خواستهشده، فایل script.js
را آپلود کنید.