لینکهای مفید برای شرکت در مسابقه:
Node v14.4.0
استفاده میکند.در طول مسابقه میتوانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.
پارسا که با پنل ادمین دیجیکالا کار میکرد، متوجه شد بعضی از عکسهای محصولات وضعیت مناسبی ندارند و برای درست دیده شدن آنها لازم است تا تغییراتی روی آنها اعمال شود. پارسا که از قضا خیلی هم صبور نبود، برای این کار از رامین خواست که خیلی فوری در صفحهی عکس محصولات، ابزاری برای او فراهم کند که بتواند با آنها عکس کالا را بچرخاند، برگرداند (flip کند) و مقدار روشنایی آن را تنظیم کند.
از طرفی، پارسا از بچگی به عکسهای هنری هم علاقه داشت. به همین دلیل، به رامین گفت که برایش چند فیلتر هم آماده کند که بتواند عکسهای سایت را هنری کند!
رامین که خیلی قلب مهربانی داشت، درخواست پارسا را قبول کرد، اما چون باید در جلسهی تیم فرانتاند شرکت میکرد، تنها فرصت کرد ظاهر صفحهی عکس کالا را پیادهسازی کند. حال، از شما میخواهیم که تا قبل از تمام شدن جلسهی رامین، با کامل کردن عملکرد این صفحه به او کمک کنید تا بتواند موارد درخواستی پارسا را به موقع به دستش برساند.
پروژهی اولیه را از این لینک دانلود کنید.
برای پیادهسازی هر یک از ابزارهای خواسته شده، یک div
خاص در نظر گرفته شده است که بهصورت زیر هستند:
preview
: برای چرخش، تغییرات روشنایی و اعمال فیلترهاpreview-scale
: برای بزرگنمایی با موسpreview-flip
: برای flip عمودی و افقیدر این سؤال، شما باید ۷ فیلتر را پیادهسازی کنید که در جدول زیر به آنها اشاره شده است:
نوع فیلتر | شدت فیلتر |
---|---|
grayscale | 1 |
sepia | 1 |
invert | 1 |
blur | 2px |
saturate | 2 |
contrast | 2 |
hue-rotate | 90deg |
برای پیادهسازی آنها، کافی است از فیلتر معادل آنها در CSS به همراه مقدار ذکر شده برای آن استفاده کنید. برای مثال، فیلتر grayscale
به صورت grayscale(1)
خواهد بود.
none
در لیست فیلترها، اگر فیلتری روی عکس اعمال شده باشد، باید حذف شود.preview-container
) نباید خالی شود. برای این کار لازم است به همراه چرخش مقداری بزرگنمایی نیز انجام شود. این بزرگنمایی به ازای هر درجه چرخش، خواهد بود. تصویر زیر، این مورد را واضحتر بیان میکند:transform-origin
را با توجه به موقعیت نشانگر موس روی تصویر (یا به طور دقیقتر، روی preview-scale
) تغییر دهید. برای این کار باید ابتدا موقعیت موس در صفحهی نمایش را با استفاده از pageX
و pageY
(که از ایونت e
ورودی تابع handleMouseMove
قابل دسترسیاند) به دست آورید. سپس با محاسبهی فاصلهی preview-scale
از سمت چپ و بالای صفحه نمایش به کمک offsetLeft
و offsetTop
، موقعیت موس روی preview-scale
را محاسبه کنید.preview-container
) خالی شود.toFixed
جاوااسکریپت استفاده کنید.script.js
هستید.پس از پیادهسازی موارد خواستهشده، فایل script.js
را آپلود کنید.