هیچ محصولی در سبد خرید نیست.

زیبل

جادوی عناصر نامرئی: خلق محتوا با قبل و بعد

جادوی عناصر نامرئی: خلق محتوا با قبل و بعد

جادوی عناصر نامرئی: خلق محتوا با قبل و بعد

شبه‌عناصر: خلق محتوای جدید با CSS! ✂️

سلام به همه خلاقان عزیز! تا اینجا با انتخاب‌گرها و شبه‌کلاس‌ها آشنا شدیم که عناصر موجود رو انتخاب می‌کنن. اما امروز می‌خوایم درباره یه قابلیت خیلی جذاب دیگه صحبت کنیم: شبه‌عناصر (Pseudo-elements)! این ابزارها به ما اجازه می‌دن که در واقع محتوای جدیدی رو به صفحه وب اضافه کنیم، بدون اینکه نیازی به نوشتن تگ‌های HTML اضافی داشته باشیم. انگار که CSS یه جورایی یه “تگ مخفی” ایجاد می‌کنه! 👻

شبه‌عناصر با دو تا دونقطه (`::`) قبل از نامشون مشخص می‌شن (این تفاوت اصلی با شبه‌کلاس‌هاست که یه دونقطه دارن). دو تا از معروف‌ترین و کاربردی‌ترین شبه‌عناصر، `::before` و `::after` هستن. بیاید ببینیم چطور کار می‌کنن!

1. شبه‌عنصر ::before: قبل از محتوا، یه چیز اضافه کن! ➕

شبه‌عنصر `::before` به شما اجازه می‌ده محتوایی رو قبل از محتوای اصلی یه عنصر، اضافه کنین. این محتوا می‌تونه متن، تصویر، یا حتی شکل‌های هندسی باشه که با CSS ساخته شدن.

نکته مهم: برای اینکه `::before` (و `::after`) کار کنن، حتماً باید از ویژگی content در CSS استفاده کنین، حتی اگه محتوای اون خالی باشه!

مثال: فرض کنیم می‌خوایم قبل از هر لینک خارجی، یه آیکن کوچک اضافه کنیم.


a[target="_blank"]::before { /* قبل از هر تگ a که targetش _blank هست */
  content: "🔗 "; /* محتوایی که اضافه میشه: یه آیکن لینک و یه فاصله */
  font-size: 0.8em; /* آیکون یه کم کوچیکتر باشه */
  color: gray; /* رنگش خاکستری باشه */
}

یا مثلاً برای اضافه کردن یه نقل قول به اول یه پاراگراف خاص:


p.quote::before {
  content: '"'; /* یه علامت نقل قول */
  font-size: 2em; /* بزرگتر باشه */
  color: #ccc; /* خاکستری */
  vertical-align: -0.3em; /* یه کم بیاد پایین */
  margin-right: 0.1em; /* فاصله با متن */
}

`::before` برای اضافه کردن عناصر تزئینی، آیکون‌ها، نشانه‌ها و یا حتی محتوای تکراری که نیازی به تگ HTML جداگانه ندارن، عالیه.

2. شبه‌عنصر ::after: بعد از محتوا، یه چیز دیگه! 🎈

شبه‌عنصر `::after` دقیقاً مثل `::before` عمل می‌کنه، با این تفاوت که محتوا رو بعد از محتوای اصلی عنصر اضافه می‌کنه. باز هم، استفاده از ویژگی `content` الزامیه!

مثال: فرض کنید می‌خوایم بعد از هر دکمه‌ای که عمل خاصی انجام می‌ده، یه فلش کوچک اضافه کنیم.


button.action-button::after { /* بعد از دکمه‌ای که کلاس action-button داره */
  content: " ▶"; /* یه فلش و یه فاصله */
  color: white; /* اگر دکمه رنگ روشن داره */
  font-size: 0.9em;
}

یا مثلاً برای پاک کردن Floatها (که یه روش قدیمی‌تره ولی کاربردش اینجاست):


.clearfix::after { /* این کلاس معمولاً روی یه div که محتوای float داره اعمال میشه */
  content: ""; /* محتوای خالی */
  display: table; /* این باعث میشه ارتفاعش به اندازه محتوای داخلش کشیده بشه */
  clear: both; /* float ها رو پاک می‌کنه */
}

`::after` هم مثل `::before` برای اضافه کردن عناصر تزئینی، آیکون‌ها، یا انجام کارهایی مثل Clearfix کاربرد داره.

چرا از شبه‌عناصر استفاده کنیم؟ 💡

استفاده از `::before` و `::after` چند تا مزیت کلیدی داره:

  • کاهش حجم HTML: نیازی به اضافه کردن تگ‌های `` یا `
    ` اضافی برای عناصر تزئینی ندارین. کد HTML تمیزتر و سبک‌تر می‌مونه.
  • انعطاف‌پذیری: می‌تونین این شبه‌عناصر رو مثل عناصر عادی استایل بدین (اندازه، رنگ، موقعیت، انیمیشن و…).
  • قابلیت استفاده مجدد: یه استایل رو برای `::before` یا `::after` تعریف کنین و به هر عنصری که خواستین اعمال کنین.
  • بهبود دسترسی‌پذیری: در بعضی موارد (مثل نشان دادن اطلاعات اضافی که برای موتورهای جستجو مهم نیست)، می‌تونین از اینها برای غنی‌سازی رابط کاربری استفاده کنین.

یادتون باشه که محتوای اضافه شده با `::before` و `::after` به صورت پیش‌فرض توسط مرورگرها به عنوان محتوای اصلی صفحه در نظر گرفته نمی‌شن (مخصوصاً برای سئو و دسترسی‌پذیری). پس برای محتوای حیاتی ازشون استفاده نکنین!

شبه‌عناصر درها رو به روی خلاقیت شما باز می‌کنن! باهاشون بازی کنین، آزمایش کنین و ببینین چطور می‌تونین بدون دست زدن به HTML، صفحات وب زیباتر و کاربردی‌تری بسازین! موفق باشین! 🚀

مقالات مرتبط

کدهای تمیز: با متغیرها، CSS را هوشمند کنید! 💡

متغیرهای CSS (Custom Properties): کد تمیزتر، مدیریت راحت‌تر! 🎨 سلام به همگی! توی پروژه‌های CSS، خیلی وقتا پیش میاد که یه رنگ، یه فونت، یا یه فاصله رو بارها و بارها توی جاهای مختلف استفاده می‌کنیم. مثلاً رنگ اصلی سایت‌مون...

ساخت انیمیشن‌های حرفه‌ای با @keyframes (گام به گام)

CSS Animations: خلق انیمیشن‌های پیچیده با @keyframes! 🎬 سلام به همگی! تا الان با Transitionها آشنا شدیم که تغییرات بین دو حالت رو نرم می‌کنن. اما اگه بخوایم انیمیشن‌های پیچیده‌تر، چند مرحله‌ای، یا حتی انیمیشن‌هایی که مدام تکرار می‌شن رو...

دگرگونی سایت با CSS: چرخش، تغییر اندازه و جابجایی

CSS Transforms: جابجایی، چرخش، تغییر اندازه و کج کردن عناصر! 🤸‍♀️ سلام دوستان! تا اینجا با انیمیشن‌های نرم و پیوسته (Transitions) آشنا شدیم. اما گاهی وقت‌ها نیاز داریم که عناصر HTML رو جابجا کنیم، بچرخونیم، اندازه‌شون رو عوض کنیم یا...

انتقال‌های نرم: عناصر خود را متحرک کنید!

CSS Transitions: جادوی حرکت نرم و روان! ✨ سلام به همه! تا حالا شده یه سایت رو ببینید که با هاور کردن روی یه دکمه، رنگش نرم و قشنگ عوض می‌شه؟ یا با تغییر اندازه یه عنصر، انیمیشن ظریفی رو...

آخرین مقالات

کدهای تمیز: با متغیرها، CSS را هوشمند کنید! 💡

متغیرهای CSS (Custom Properties): کد تمیزتر، مدیریت راحت‌تر! 🎨 سلام به همگی! توی پروژه‌های CSS، خیلی وقتا پیش میاد که یه رنگ، یه فونت، یا یه فاصله رو بارها و بارها توی جاهای مختلف استفاده می‌کنیم. مثلاً رنگ اصلی سایت‌مون...

ساخت انیمیشن‌های حرفه‌ای با @keyframes (گام به گام)

CSS Animations: خلق انیمیشن‌های پیچیده با @keyframes! 🎬 سلام به همگی! تا الان با Transitionها آشنا شدیم که تغییرات بین دو حالت رو نرم می‌کنن. اما اگه بخوایم انیمیشن‌های پیچیده‌تر، چند مرحله‌ای، یا حتی انیمیشن‌هایی که مدام تکرار می‌شن رو...

دگرگونی سایت با CSS: چرخش، تغییر اندازه و جابجایی

CSS Transforms: جابجایی، چرخش، تغییر اندازه و کج کردن عناصر! 🤸‍♀️ سلام دوستان! تا اینجا با انیمیشن‌های نرم و پیوسته (Transitions) آشنا شدیم. اما گاهی وقت‌ها نیاز داریم که عناصر HTML رو جابجا کنیم، بچرخونیم، اندازه‌شون رو عوض کنیم یا...

انتقال‌های نرم: عناصر خود را متحرک کنید!

CSS Transitions: جادوی حرکت نرم و روان! ✨ سلام به همه! تا حالا شده یه سایت رو ببینید که با هاور کردن روی یه دکمه، رنگش نرم و قشنگ عوض می‌شه؟ یا با تغییر اندازه یه عنصر، انیمیشن ظریفی رو...