web design uiNovember 5, 20267 min read

سایه‌های UI: چرا سایه مشکی ۲۵ درصدی اشتباه به نظر می‌رسد و کدام سایه‌های لایه‌ای را باید استفاده کرد

سایه مشکی با شفافیت ۲۵ درصد مثل لکه‌ای زیر کارت دیده می‌شود. چرا سایه‌های نرم حدود ۸ درصد شفافیت، دو لایه و یک تینت دارند، ارتفاع چطور باید رشد کند و چهار توکن آماده سایه به صورت CSS.

By Boone
XLinkedIn
UI Shadows: Why the 25% Black Drop Shadow Looks Wrong and the Layered Shadows to Use

سایه‌ای که بیشتر طراح‌ها سراغش می‌روند مشکی با ۲۵ درصد شفافیت است. با این شدت، سایه شبیه نور نیست. شبیه یک لکه زیر کارت است.

سایه خوب تقریباً نامرئی است: بلند شدن کارت را حس می‌کنید، پیش از آن‌که سایه را ببینید. این هم راه رسیدن به آن، با چهار توکن برای کپی کردن.

چرا سایه پیش‌فرض شبیه لکه است

سایه پیش‌فرض Figma مشکی با شفافیت ۲۵ درصد و آفست ۴ به پایین است. دو آموزش رایج آن را تکرار می‌کنند و همین باعث پخش شدنش می‌شود: پیش‌فرض یک ابزار تبدیل می‌شود به تصمیم طراحی که هیچ‌کس نگرفته است.

سایه واقعی نرم است. نور دور جسم می‌پیچد، پس لبه سایه کم‌کم محو می‌شود و هرچه از جسم دورتر شود کم‌رنگ‌تر می‌شود. یک لایه تیره و سخت هیچ‌کدام از این‌ها را ندارد. یک لبه دارد و یک شدت، و چشم آن را کثیفی می‌بیند، لکه‌ای خاکستری، نه سطحی بلندشده.

راه‌حل ۱: ۸ درصد، نه ۲۵

مشکی با ۲۵٪

کارت پروفایل Mia Chen، طراح محصول، با سایه‌ای تیره و تنگ زیر آن

مشکی با ۸٪، بلور پهن‌تر

همان کارت با سایه‌ای بسیار نرم و پهن که به‌سختی دیده می‌شود
همان کارت، همان زمینه. در سمت چپ سایه بلندترین صدای کارت است. در سمت راست یک بلندشدگی نرم است و محتوا چیزی است که به آن نگاه می‌کنید. کم کردن شفافیت نصف راه‌حل است. بزرگ‌تر کردن بلور نصف دیگر.

وقتی بلور بزرگ‌تر می‌شود، همان مقدار سایه روی سطح بزرگ‌تری پخش می‌شود و خودبه‌خود روشن‌تر می‌شود. برای همین یک سایه پهن با ۸ درصد طبیعی‌تر از یک سایه تنگ با ۸ درصد به نظر می‌رسد. از ۸ درصد شروع کنید و فقط اگر کارت روی پس‌زمینه‌تان گم شد بالاتر ببرید.

راه‌حل ۲: دو سایه روی هم

سه کارت سفید روی زمینه خاکستری روشن با برچسب‌های تنگ، پهن و هر دو. کارت تنگ سایه‌ای مویی دارد، کارت پهن هاله‌ای نرم، و کارت سوم هر دو را دارد
چپ: تنگ (0 1px 2px، ۶٪). وسط: پهن (0 8px 24px، ۸٪). راست: هر دو روی هم.

یک سایه باید دو کار را انجام دهد و هیچ‌کدام را خوب انجام نمی‌دهد. دو سایه کارها را بین خودشان تقسیم می‌کنند.

سایه تنگ درست زیر لبه می‌نشیند و می‌گوید «این به سطح چسبیده است». سایه پهن هاله نرمی است که می‌گوید «این از سطح بلند شده است». با هم مثل یک سایه طبیعی دیده می‌شوند، چون نور واقعی همین کار را می‌کند: یک خط تماس تیره به‌علاوه یک محو شدن پهن و کم‌رنگ.

در CSS دو لایه یک تعریف واحدند که با ویرگول جدا شده‌اند:

css
box-shadow: 0 1px 2px rgba(27, 21, 48, 0.06), 0 8px 24px rgba(27, 21, 48, 0.08);

راه‌حل ۳: تینت کنید، خاکستری نکنید

مشکی خالص

کارت سفید روی پس‌زمینه بنفش کمرنگ با سایه خاکستری

تینت‌شده با ink

همان کارت با سایه بنفش که در پس‌زمینه ترکیب می‌شود
مشکی خالص وقتی با پس‌زمینه رنگی مخلوط شود آن را خاکستری و گل‌آلود می‌کند. سایه‌ای با سایه تیره‌ای از همان رنگ پس‌زمینه تمیز می‌ماند. هر دو سایه اینجا ۱۶ درصدند، پس تنها تفاوت رنگ است.

قاعده این است که از ink، تیره‌ترین رنگ پالتتان، به‌عنوان رنگ سایه با شفافیت کم استفاده کنید. در توکن‌های خودمان ink برابر #1B1530 است، یک بنفش بسیار تیره. روی صفحه سفید تینت به‌سختی دیده می‌شود. روی صفحه رنگی، یک پنل برند یا یک بخش تینت‌شده، تفاوت بین سایه‌ای است که به آن‌جا تعلق دارد و سایه‌ای که چسبانده‌شده به نظر می‌رسد.

راه‌حل ۴: بالاتر یعنی بزرگ‌تر

چهار کارت سفید با برچسب XS، SM، MD و LG، هرکدام کمی بالاتر از قبلی، با سایه‌هایی که بزرگ‌تر و نرم‌تر می‌شوند
چهار ارتفاع. سایه با ارتفاع بزرگ می‌شود و شدتش پایین می‌ماند.

وقتی چیزی بالاتر قرار می‌گیرد، مثل منو بالای یک کارت یا مودال بالای یک صفحه، سایه‌اش بزرگ‌تر و نرم‌تر می‌شود، چون نور جای بیشتری برای پخش شدن دارد. تیره‌تر نمی‌شود. طراحی که سایه چیز بالاتر را تیره‌تر کند دوباره به همان لکه می‌رسد.

این یک مجموعه کوچک و بسته از توکن‌ها می‌دهد:

توکنلایه ۱لایه ۲کاربرد
XS0 1px 2px، ۶٪بدون لایهورودی‌ها، چیپ‌های کوچک
SM0 1px 2px، ۶٪0 2px 6px، ۸٪کارت‌ها در حالت عادی
MD0 1px 2px، ۶٪0 8px 24px، ۸٪کارت‌های بلندشده، پاپ‌اورها
LG0 2px 4px، ۶٪0 16px 40px، ۱۲٪مودال‌ها، منوهای بالای همه چیز

هر لایه X برابر 0 و spread برابر 0 دارد و با ink یعنی #1B1530 رنگ شده است. فیلدهای X، Y، blur و spread در Figma مستقیماً به چهار عدد در box-shadow در CSS نگاشت می‌شوند.

توکن‌ها به صورت CSS

css
:root { --shadow-xs: 0 1px 2px rgba(27, 21, 48, 0.06); --shadow-sm: 0 1px 2px rgba(27, 21, 48, 0.06), 0 2px 6px rgba(27, 21, 48, 0.08); --shadow-md: 0 1px 2px rgba(27, 21, 48, 0.06), 0 8px 24px rgba(27, 21, 48, 0.08); --shadow-lg: 0 2px 4px rgba(27, 21, 48, 0.06), 0 16px 40px rgba(27, 21, 48, 0.12); } .card { box-shadow: var(--shadow-md); }

این چهار توکن توصیه ما هستند، نه مقدار یک پلتفرم. رنگ ink را با تیره‌ترین سایه برند خودتان عوض کنید و ساختار را نگه دارید.

جایی که سایه‌ها از کار می‌افتند: دارک مود

سایه روی تیره

کارت تیره روی پس‌زمینه تیره با سایه‌ای بزرگ که تقریباً نامرئی است

سطح روشن‌تر

همان کارت روی پس‌زمینه تیره که با رنگ سطح روشن‌تر و بدون سایه دیده می‌شود
سایه آنچه پشتش است را تیره می‌کند و پس‌زمینه تیره چیز زیادی برای تیره شدن ندارد. در سمت چپ سایه بزرگ نامرئی است و کارت در صفحه حل می‌شود. در سمت راست کارت صرفاً یک سطح روشن‌تر است و همین آن را بلند می‌کند.

پس در تم تیره، یک لایه را با روشن‌تر کردنش بالا ببرید، نه با سایه انداختن. مقاله ما درباره سیستم‌های رنگ دارک مود رمپ سطوح را پوشش می‌دهد و رنگ پس‌زمینه لایت مود خاکستری‌های سمت دیگر را.

تست چشم‌ریز کردن

چشم‌هایتان را ریز کنید یا از صفحه عقب بروید. اگر هنوز هر سایه را به‌شکل یک شکل تیره می‌بینید، بیش از حد قوی است. اگر لبه کارت‌ها روی بدترین مانیتورتان ناپدید می‌شوند، شفافیت را یک پله بالا ببرید. سایه درست وقتی مستقیم نگاهش می‌کنید محو می‌شود و وقتی برش می‌دارید خودش را نشان می‌دهد.

سوالات متداول

بهترین drop shadow برای UI چیست؟

دو لایه روی هم با تینت تیره از ink خودتان: یک لایه تنگ مثل 0 1px 2px با ۶ درصد و یک لایه پهن مثل 0 8px 24px با ۸ درصد. به‌جای لکه، شبیه نور طبیعی دیده می‌شود.

شفافیت سایه UI چقدر باشد؟

چهار توکن ما از ۶ تا ۱۲ درصد هستند. برای کارت از ۸ درصد شروع کنید و فقط اگر لبه ناپدید شد بالاتر ببرید. مشکی با ۲۵ درصد، که پیش‌فرض رایجی است، به‌ندرت روی یک رابط تمیز درست است.

drop shadow پیش‌فرض Figma چیست؟

مشکی (#000000) با ۲۵ درصد شفافیت و آفست ۴ به پایین. این نقطه شروع ابزار است، نه یک تصمیم طراحی، پس بیشتر طراحی‌ها با تغییر دادنش بهتر می‌شوند.

آیا سایه‌ها باید مشکی خالص باشند؟

نه. از نسخه‌ای بسیار تیره از رنگ برند یا ink استفاده کنید. روی پس‌زمینه رنگی، مشکی خالص سایه را خاکستری و گل‌آلود می‌کند، اما سایه تینت‌شده رنگ را تمیز نگه می‌دارد.

چطور با سایه ارتفاع را نشان بدهم؟

سایه عنصر بالاتر را بزرگ‌تر و نرم‌تر کنید، نه تیره‌تر. از مجموعه کوچکی از توکن‌ها مثل XS، SM، MD و LG استفاده کنید تا هر لایه رابط از یکی از چهار سایه استفاده کند.

آیا سایه‌ها در دارک مود کار می‌کنند؟

ضعیف. پس‌زمینه روشنی برای تیره کردن باقی نمانده، پس سایه‌های بزرگ ناپدید می‌شوند. به‌جایش یک لایه را با رنگ سطح روشن‌تر بالا ببرید.

چطور box-shadow لایه‌ای در CSS بنویسم؟

لایه‌ها را در یک تعریف box-shadow فهرست کنید و با ویرگول جدا کنید: box-shadow: 0 1px 2px rgba(27,21,48,.06), 0 8px 24px rgba(27,21,48,.08);.

منابع

  • drop shadow پیش‌فرض Figma برابر #000000 با ۲۵٪ شفافیت، X برابر 0 و Y برابر 4 است. آموزش‌ها روی مشکی ۲۵٪ توافق دارند؛ درباره بلور پیش‌فرض اختلاف دارند، برای همین این مقاله هیچ‌وقت آن را ذکر نمی‌کند.
  • #00000040 همان #000000 با ۲۵٪ در هگز ۸ رقمی است (0x40 یعنی ۶۴ از ۲۵۵، حدود ۲۵٪).
  • چهار توکن و ink با مقدار #1B1530 (violet 900) استایل‌های افکت UX Brainy ما هستند. آن‌ها یک توصیه‌اند، نه مقدار یک پلتفرم.
  • کارت‌های بالا مثال‌های خود ما هستند. دموی تینت از #4E2FB3 با ۱۶ درصد در کنار مشکی با ۱۶ درصد استفاده می‌کند.
  • پست‌های بیشتر با یک قاعده در UX Brainy.

Want a design system where shadows, spacing and color are decided once and used everywhere? Our team designs and builds product UI on tokens.

Get Started

More from Brainy Papers

Keep reading