شبهعناصر (Pseudo-elements)
آشنایی با شبهعناصر CSS: ::before، ::after، ::first-line، ::selection و کاربردهای آنها
شبهعنصر (Pseudo-element) چیست؟
شبهعنصر به شما اجازه میدهد بخشی از یک عنصر را استایل دهید — مثلاً اولین حرف، اولین خط، یا محتوایی که اصلاً در HTML وجود ندارد!
تفاوت شبهکلاس و شبهعنصر
| ویژگی | شبهکلاس (:) | شبهعنصر (::) |
|---|---|---|
| دونقطه | تک (:) | دوبل (::) |
| هدف | وضعیت عنصر | بخشی از عنصر |
| مثال | :hover | ::before |
شبهعناصر اصلی
| شبهعنصر | توضیح |
|---|---|
::before | محتوای قبل از عنصر ⭐ |
::after | محتوای بعد از عنصر ⭐ |
::first-line | اولین خط متن |
::first-letter | اولین حرف |
::selection | متن انتخاب شده |
::placeholder | متن راهنمای input |
::marker | نشانه لیست |
۱. ::before و ::after ⭐
مهمترین شبهعناصر — محتوایی میسازند که در HTML نیست:
/* آیکون قبل از لینک */
a::before {
content: "🔗 ";
}
/* متن بعد از پاراگراف */
.note::after {
content: " ← توجه!";
color: red;
}
⚠️ توجه: همیشه content الزامی است — حتی اگر خالی.
کاربردهای ::before و ::after
/* دکمه با آیکون */
.btn-download::before {
content: "⬇";
margin-left: 8px;
}
/* نشان ضروری */
.required::after {
content: " *";
color: red;
}
/* زیرخط انیمیشنی */
.fancy-link::after {
content: "";
display: block;
height: 2px;
width: 0;
background: #3498db;
transition: width 0.3s;
}
.fancy-link:hover::after {
width: 100%;
}
۲. ::first-letter (حرف اول)
p::first-letter {
font-size: 3em;
font-weight: bold;
float: right;
color: #3498db;
margin-left: 5px;
}
۳. ::first-line (خط اول)
p::first-line {
font-weight: bold;
text-transform: uppercase;
letter-spacing: 1px;
}
۴. ::selection (متن انتخاب شده)
::selection {
background: #3498db;
color: white;
}
::moz-selection {
background: #3498db;
color: white;
}
۵. ::placeholder
input::placeholder {
color: #999;
font-style: italic;
}
۶. ::marker (نشانه لیست)
li::marker {
color: #3498db;
font-size: 1.2em;
}
ساخت اشکال با ::before و ::after
/* دایره تزئینی */
.circle {
position: relative;
}
.circle::before {
content: "";
position: absolute;
top: -5px; right: -5px;
width: 15px; height: 15px;
background: #e74c3c;
border-radius: 50%;
}
Clearfix با شبهعنصر
.clearfix::after {
content: "";
display: table;
clear: both;
}
بهترین شیوهها
- از
::beforeو::afterبرای محتوای تزئینی استفاده کنید - محتوای متنی مهم را در شبهعنصر نگذارید — صفحهخوان آن را نمیخواند
- برای دسترسپذیری،
aria-hidden="true"بهکار ندهید - از
::selectionبرای رنگ انتخاب متن استفاده کنید contentهمیشه الزامی است
نکات مهم
- شبهعنصر با
::(دو دونقطه) نوشته میشود ::beforeو::afterبهcontentنیاز دارند- شبهعناصر از نظر DOM وجود ندارند — فقط بصری هستند
- محتوای
contentتوسط موتورهای جستجو قابل ایندکس نیست - در CSS2 با تک دونقطه (
:before) نوشته میشد — اکنون::beforeاستاندارد است
این مبحث بخشی از دوره آموزش کامل CSS است.