پرش به محتوا

سی‌اس‌اس/شبه‌کلاس‌ها و شبه‌عناصر

ویکی‎کتاب، کتابخانهٔ آزاد
animation شبه‌کلاس‌ها و شبه‌عناصر سفارشی‌سازی اسکرول
سی‌اس‌اس


شبه‌کلاس‌ها و شبه‌عناصر

[ویرایش]

در CSS، گاهی لازم است به حالتی خاص از یک عنصر یا بخش خاصی از آن استایل بدهیم بدون اینکه نیاز باشد کلاس یا ID اضافه کنیم. اینجاست که شبه‌کلاس‌ها (pseudo-classes) و شبه‌عناصر (pseudo-elements) وارد عمل می‌شوند.

تفاوت کلی

[ویرایش]
  • شبه‌کلاس‌ها رفتار یا حالت خاص یک عنصر را هدف می‌گیرند (مثلاً زمانی که روی عنصر هاور می‌کنیم).
  • شبه‌عناصر بخش خاصی از یک عنصر را انتخاب می‌کنند (مثلاً اولین حرف یا قبل از محتوای عنصر).

شبه‌کلاس‌ها (pseudo-classes)

[ویرایش]

شبه‌کلاس‌ها با یک دونقطه (:) تعریف می‌شوند و حالت خاصی از عنصر را هدف می‌گیرند.

مثال‌های رایج

[ویرایش]

:hover

[ویرایش]

وقتی ماوس روی عنصر قرار می‌گیرد.

button:hover {
  background-color: blue;
}

:focus

[ویرایش]

زمانی‌که عنصر در فوکوس قرار می‌گیرد (مثلاً وقتی روی input کلیک می‌کنیم).

input:focus {
  border-color: green;
}

:nth-child()

[ویرایش]

انتخاب عناصر بر اساس ترتیب آن‌ها در پدرشان.

li:nth-child(odd) {
  background: #eee;
}

می‌توان از عدد، odd (فرد)، even (زوج)، یا فرمول استفاده کرد: `2n+1`, `3n`, و...

:not(selector)

[ویرایش]

انتخاب تمام عناصری که selector مشخص را ندارند.

p:not(.intro) {
  color: gray;
}

:first-child و :last-child

[ویرایش]

انتخاب اولین یا آخرین فرزند از نوع خود در عنصر والد.

div:first-child {
  border-top: 2px solid black;
}

:checked، :disabled، :valid و...

[ویرایش]

برای کار با فرم‌ها استفاده می‌شوند:

input:checked {
  accent-color: red;
}

شبه‌عناصر (pseudo-elements)

[ویرایش]

شبه‌عناصر با دو نقطه (::) نوشته می‌شوند و بخشی از عنصر را هدف می‌گیرند.

مثال‌های مهم

[ویرایش]

::before

[ویرایش]

قبل از محتوای عنصر، یک محتوای مجازی اضافه می‌کند.

h2::before {
  content: "🔹 ";
}

::after

[ویرایش]

بعد از محتوای عنصر، یک بخش مجازی اضافه می‌کند.

h2::after {
  content: " ❗";
}

نکته: ::before و ::after نیاز به ویژگی `content` دارند، حتی اگر خالی باشد.

::first-letter

[ویرایش]

انتخاب اولین حرف عنصر.

p::first-letter {
  font-size: 200%;
  color: red;
}

::first-line

[ویرایش]

انتخاب اولین خط متن (برای متن‌های چند خطی مفید است).

p::first-line {
  font-weight: bold;
}

::selection

[ویرایش]

استایل بخش انتخاب‌شده توسط کاربر (مانند متن هایلایت‌شده با ماوس).

::selection {
  background: yellow;
  color: black;
}

نکات مهم

[ویرایش]
  • استفاده از شبه‌کلاس‌ها به جای افزودن کلاس‌های اضافه، کد شما را تمیزتر می‌کند.
  • بسیاری از افکت‌های hover، focus، و حالت‌های فرم با استفاده از pseudo-class قابل انجام است.
  • pseudo-elementها برای ساخت جلوه‌های پیشرفته مانند tooltip یا دکمه‌های تزئینی بسیار مفیدند.
  • برای استفاده حرفه‌ای از ::before/::after بهتر است آن عنصر دارای `display: block` یا `inline-block` باشد.

تمرین پیشنهادی

[ویرایش]

یک کارت طراحی کنید که:

  • با استفاده از `:hover` رنگ آن تغییر کند.
  • با `::before` یک آیکون یا نماد در ابتدا نمایش داده شود.
  • با `:nth-child(odd)` پس‌زمینه کارت‌های فردی متفاوت باشد.

سئو و دسترس‌پذیری

[ویرایش]
  • pseudo-class و pseudo-element تأثیر مستقیم بر سئو ندارند اما در UI/UX مهم‌اند.
  • برای خوانایی بهتر یا هدایت کاربر، استفاده درست از آن‌ها در افزایش تعامل تأثیرگذار است.
  • از استفادهٔ زیاد از ::before/::after برای اطلاعات مهم خودداری کنید، چون برخی اسکرین‌ریدرها آن‌ها را نادیده می‌گیرند.

پیوندهای مرتبط

[ویرایش]

جمع‌بندی

[ویرایش]

شبه‌کلاس‌ها و شبه‌عناصر ابزارهای مهمی در CSS هستند که به کمک آن‌ها می‌توان بدون افزودن کد HTML اضافه، استایل‌های پیچیده و کاربردی ایجاد کرد. درک درست آن‌ها پایهٔ طراحی حرفه‌ای و مدرن وب است.