ثبت سفارش

سازنده‌ی box-shadow

با اسلایدرها سایه بساز، چند لایه روی هم بگذار و پیش‌نمایش را همان لحظه ببین. یا از نمونه‌های آماده شروع کن.

نمونه‌های آماده
کد CSS
 

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

box-shadow چیست؟

ویژگی box-shadow در CSS به عناصر سایه می‌دهد؛ از سایه‌ی ظریف زیر یک کارت تا حس عمق در دکمه‌ها، مودال‌ها و منوهای کشویی. سایه‌ی خوب بدون اینکه دیده شود، به کاربر می‌فهماند کدام بخش بالاتر است و کدام قابل کلیک.

ساختار box-shadow

box-shadow: [inset] <x> <y> <blur> <spread> <color>;

/* مثال */
box-shadow: 0 8px 24px -4px rgba(16, 24, 40, 0.18);
مقدارکار
xجابه‌جایی افقی؛ عدد منفی سایه را به چپ می‌برد
yجابه‌جایی عمودی؛ مثبت یعنی سایه پایین عنصر (نور از بالا)
blurمیزان محو شدن لبه‌ی سایه؛ عدد بیشتر یعنی سایه‌ی نرم‌تر
spreadبزرگ یا کوچک کردن سایه؛ منفی برای سایه‌های جمع‌وجور و طبیعی
colorرنگ سایه؛ بهتر است با شفافیت (rgba) باشد
insetسایه را به داخل عنصر می‌برد؛ برای فیلدهای فرم و حالت فشرده‌ی دکمه

راز سایه‌ی نرم و طبیعی؛ سایه‌ی لایه‌ای

سایه‌های واقعی یکدست نیستند: نزدیک جسم تیره و تیز و دورتر کم‌رنگ و محو. یک سایه‌ی CSS این را نشان نمی‌دهد، ولی چند سایه‌ی کم‌رنگ روی هم دقیقاً همین حس را می‌سازد:

box-shadow:
  0 1px 2px rgba(16, 24, 40, 0.06),
  0 4px 8px rgba(16, 24, 40, 0.06),
  0 12px 24px rgba(16, 24, 40, 0.08),
  0 24px 48px rgba(16, 24, 40, 0.08);

چند نکته‌ی دیگر برای سایه‌ی حرفه‌ای:

  • به‌جای سیاه خالص، از رنگ تیره‌ی مایل به رنگ برند یا پس‌زمینه استفاده کن.
  • جهت نور را در کل سایت یکسان نگه دار؛ معمولاً y مثبت و x صفر.
  • spread منفی کمک می‌کند سایه‌ی بزرگ از کناره‌ها بیرون نزند.
  • در تم تاریک سایه کمتر دیده می‌شود؛ آنجا از حاشیه‌ی روشن یا پس‌زمینه‌ی روشن‌تر برای نشان دادن عمق کمک بگیر.

سایه در حالت hover

.card {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}

.card:hover {
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.16);
  transform: translateY(-4px);
}

از سایه‌ی فیگما تا کد

مقادیر Drop shadow در فیگما (X، Y، Blur، Spread و رنگ) یک‌به‌یک با box-shadow برابرند و می‌توانی مستقیم در این ابزار واردشان کنی. اگر کل طرح را داری و می‌خواهی سایه‌ها، گوشه‌ها و جزئیات دقیقاً مثل فیگما پیاده شوند، تبدیل فیگما به HTML را ببین. برای تبدیل اندازه‌ها هم مبدل px به rem به کارت می‌آید.

سؤال‌های رایج

box-shadow در CSS چطور کار می‌کند؟

box-shadow یک یا چند سایه پشت (یا با inset داخل) عنصر می‌کشد. هر سایه از جابه‌جایی افقی و عمودی، میزان محو شدن (blur)، گستردگی (spread) و رنگ تشکیل می‌شود. چند سایه با کاما از هم جدا می‌شوند.

چطور سایه‌ی نرم و طبیعی بسازم؟

به‌جای یک سایه‌ی بزرگ و تیره، چند سایه‌ی کم‌رنگ با فاصله و blur رو به افزایش روی هم بگذار (layered shadow) و از رنگ مایل به رنگ پس‌زمینه به‌جای سیاه خالص استفاده کن. حالت «سایه‌ی لایه‌ای» در همین ابزار همین کار را می‌کند.

فرق box-shadow با filter: drop-shadow چیست؟

box-shadow دور کادر مستطیلی عنصر سایه می‌اندازد، اما drop-shadow دور شکل واقعی محتوا (مثلاً قسمت‌های غیرشفاف PNG یا SVG) را می‌گیرد. drop-shadow مقدار spread و inset ندارد.

سایه روی سرعت سایت اثر دارد؟

سایه‌های معمولی تقریباً هزینه‌ای ندارند. فقط انیمیت کردن مستقیم box-shadow روی تعداد زیادی عنصر ممکن است کند باشد؛ در این حالت سایه را روی یک ::after بگذار و opacity آن را انیمیت کن.

سایه‌ی فیگما را چطور به CSS تبدیل کنم؟

Drop shadow فیگما دقیقاً همان مقادیر X، Y، Blur و Spread را دارد و می‌شود مستقیم در این ابزار وارد کرد. Inner shadow فیگما هم معادل inset است. در پنل Dev Mode فیگما هم کد CSS سایه نمایش داده می‌شود.

طرح فیگما یا XD داری و کد تمیز و دقیق می‌خواهی؟ تبدیل فیگما به HTML ←
زمان و قیمت ثبت سفارش