آموزش ایجاد افکت سایه در CSS | انواع shadow در CSS

افکت سایه در CSS

سایه (به انگلیسی shadow) از گذشته با به امروز در طرح‌های گرافیکی نقش مهمی داشته و دارد. حتی در زمانی که طرح‌های تخت (flat) مد شده بود، طولی نکشید که طرح‌های فِلَت سایه‌‌دار (با سایه‌های بسیار کشیده و کم رنگ) جای طرح‌های فلت را گرفت. در این درس قصد داریم تا پیاده سازی انواع افکت سایه در CSS را آموزش دهیم.

افکت سایه در زبان CSS

در زبان CSS می‌توان افکت سایه را به عناصر مختلف و متون اعمال کرد. برای ایجاد افکت سایه، ۲ ویژگی مختلف در CSS وجود دارد:

  • text-shadow
  • box-shadow


آموزش ویژگی text-shadow

از ویژگی text-shadow برای ایجاد افکت سایه برای متن استفاده می‌شود. به مثال زیر دقت کنید:

<p style="text-shadow: 2px 2px 3px black">من یک متن سایه دار هستم</p>

خروجی کد بالا:

من یک متن سایه دار هستم


ویژگی text-shadow می‌تواند ۴ پارامتر به عنوان ورودی بگیرد. پارامتر اول موقعیت سایه در محور X، پارامتر دوم موقعیت سایه در محور Y و کشیدگی سایه را تعریف می‌کند. همچنین با استفاده از پارامتر چهارم می توان رنگ سایه را تعریف کرد.

با کمی تغییر در کد بالا می‌توانید با عملکرد هرکدام از این پارامترها بیشتر آشنا شوید.

پارمتر اول و دوم که موقعیت سایه را تعیین می‌کنند می‌توانند عدد های منفی هم بگیرند (مثل 5px-). مثلا در پارامتر اول اگر مقدار عدد منفی باشد، سایه به سمت چپ کشیده می‌شود. اما اگر عدد مثبت باشد سایه به سمت راست کشیده می‌شود.

پارامتر دوم اگر منفی بود، سایه به سمت بالا و اگر مثبت بود، سایه به سمت پایین متمایل می‌شود.

آموزش ویژگی box-shadow

با استفاده از ویژگی box-shadow می‌توان افکت سایه را به عناصر موجود در صفحه وب اعمال کرد. به مثال زیر دقت کنید:

<p style="background:pink; box-shadow: 5px -8px 5px blue">من یک متن سایه دار هستم</p>

خروجی کد بالا:

من یک متن سایه دار هستم


عملکرد ویژگی box-shadow با ویژگی text-shadow هیچ فرقی نمی‌کند. یعنی دقیقا همان پارامتر‌هایی که توضیح دادیم، اینجا هم وجود دارند. پس از توضیح دوباره آن صرف نظر می‌کنیم.

سایه داخلی در box-shadow

افرادی که کمی با مباحث گرافیک آشنایی دارند می دانند که ما دو نوع سایه داریم: سایه بیرونی و داخلی. تا اینجای آموزش صحبت از سایه‌های بیرونی بود. برای تنظیم سایه داخلی کافیست تا از کلمه inset در ابتدای مقدار ویژگی box-shadow استفاده کنیم. به مثال زیر دقت کنید:

<p style="background:pink; box-shadow: inset 5px -8px 5px blue">من یک متن سایه دار هستم</p>

خروجی کد بالا:

من یک متن سایه دار هستم


نکته: سایه داخلی فقط در box-shadow وجود دارد. یعنی از کلمه inset نمی‌توانید در text-shadow استفاده کنید.

دیدگاه کاربران

  • mrms

    سلام . ببخشید میخوام یه سایه ای برای یه img توی سایتم ایجاد کنم که از سیاه شروع بشه و کم کم رنگش تیره بشه تا سیاه. میشه راهنمایی کنین؟ممنون

    • علی سلطانی

      سلام وقت بخیر
      برای تصویر می‌تونید از ویژگی box-shadow استفاده کنید که ۴ پارامتر مختلف دریافت می‌کنه
      برای دریافت اینکه چطور می‌تونید سایه موردنظر خودتون رو با استفاده از این ۴ پارامتر تنظیم کنید لطفا با دقت این مقاله رو بخونید
      موفق باشید

  • محمد

    پارامتر سوم چه کاربردی داره؟

    • مریم جعفرپور

      در عدد سوم میشه میزان تاری و در عدد چهارم (قابل اضافه شدن است) سایز و میزان گسترش را تعیین کرد

  • کیان

    هردو سایه باکس نمیتونن همزمان برای “یک باکس” تعریف شن ؟
    یعنی هم به سمت داخل سایه بخوره هم بیرون بدون تعریف کردن پاراگراف اضافه

    • مریم جعفرپور

      برای یه باکس نمیشه همزمان دو خط shadow‌ مجزا نوشت. اما می‌تونید به روش زیر اقدام کنید:

      box-shadow: inset 0 3px 0px #dcffa6, 0 2px 5px #000

  • رضا مهرعلی

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

    • علی سلطانی

      می‌تونید بجای کتاب از وبسایت w3schools.com به عنوان یک منبع و رفرنس استفاده کنید.

  • رضا مهرعلی

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

    • علی سلطانی

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

  • amirhossein

    سلام.
    ببخشید آموزش html و css ادامه ندارد؟
    چون اینها فقط در حد ابتدایی است.

    • مریم جعفرپور

      سلام بله به مرور درس‌های دیگه هم اضافه میشن.