در حال بارگذاری...

سودوالمان‌های CSS

سودوکلاس وقتی وضعیت عوض می‌شود ظاهر را عوض می‌کند (:hover، :focus). سودو‌المان یک قدم جلوتر است: می‌توانید یک تکه از متن را استایل بدهید، یا یک جعبهٔ کوچک قبل یا بعد از محتوای واقعی بسازید — با دو دونقطه (::) و بدون تگ اضافه در HTML.

سودو‌المان یعنی چه؟

سودو‌المان کلمه‌ای است که با :: به سلکتور می‌چسبد. چیزی را هدف می‌گیرد که در markup یک عنصر کامل نیست: حرف اول، خط اول، یا یک جعبهٔ ساختگی قبل/بعد محتوا. برای ::before و ::after معمولاً باید content بگذارید تا چیزی دیده شود.

چهار سودو‌المان پرکاربرد

اول این‌ها را یاد بگیرید. شکل قدیمی با یک دونقطه (:before) هنوز در خیلی مرورگرها کار می‌کند، ولی املای مدرن با دو دونقطه را بنویسید.

📊 سودو‌المان‌های روزمرهٔ CSS

سودو‌المان چه چیزی را استایل می‌کند مثال
::before جعبهٔ قبل از محتوای عنصر p::before
::after جعبهٔ بعد از محتوای عنصر a::after
::first-letter حرف اول یک بلوک متن p::first-letter
::first-line خط اول یک بلوک متن p::first-line

قبل از محتوا — ::before و content

::before یک جعبهٔ مجازی قبل از متن واقعی می‌سازد. تقریباً همیشه content می‌گذارید — یک رشته، یا "" برای جعبهٔ خالی تزئینی.

قبل — علامت نقل‌قول باز

css
CSS Code
.quote::before {
content: "“";
color: #0f766e;
font-size: 1.5rem;
margin-right: 0.25rem;
}

content را فراموش نکنید

بدون content خیلی از قوانین ::before / ::after هیچی نشان نمی‌دهند. برای نوار رنگی یا آیکون پس‌زمینه، content: "" کافی است.

بعد از محتوا — ::after

::after همان ایده است، ولی بعد از محتوا — برای واحد، نشان کوچک، یا پسوند.

بعد — نشانهٔ لینک بیرونی

css
CSS Code
a.external::after {
content: " ↗";
font-size: 0.85em;
}

معنی لازم را اینجا قایم نکنید

صفحه‌خوان و بعضی ابزارها با محتوای تولیدشده یکسان رفتار نمی‌کنند. چیزی که کاربر حتماً باید بفهمد را فقط داخل ::before یا ::after نگذارید؛ متن واقعی در HTML بماند.

حرف اول — ::first-letter

::first-letter حرف اول متن یک بلوک را می‌گیرد — همان ظاهر کلاسیک حرف بزرگ ابتدای پاراگراف.

حرف اول — کاراکتر بزرگ آغازین

css
CSS Code
.lead::first-letter {
font-size: 2.5rem;
font-weight: 700;
color: #0f766e;
float: left;
line-height: 1;
margin-right: 0.15em;
}

خط اول — ::first-line

::first-line فقط اولین خط دیده‌شده را استایل می‌دهد — نه «جملهٔ اول»، بلکه همان خطی که مرورگر با شکستن خطوط ساخته.

خط اول — کمی پررنگ‌تر

css
CSS Code
.lead::first-line {
font-weight: 600;
color: #334155;
}

جعبهٔ خالی تزئینی

گاهی فقط یک نوار رنگی می‌خواهید، بدون متن. همان content: "" کافی است.

before خالی — نوار تزئینی

css
CSS Code
.card::before {
content: "";
display: block;
height: 4px;
background: #0f766e;
margin-bottom: 0.75rem;
}

عادت‌های خوب

  • سودو‌المان = دو دونقطه (::before)؛ سودوکلاس = یک دونقطه (:hover)
  • روی ::before / ::after اگر چیزی باید دیده شود، content بگذارید
  • متن ضروری را در HTML نگه دارید، نه فقط در محتوای تولیدشده
  • ::first-letter و ::first-line روی بلوک‌های متن‌دار کار می‌کنند
  • حتی اگر :before قدیمی کار کرد، :: مدرن را ترجیح بدهید

خودتان امتحان کنید

  1. صفحهٔ کوتاهی با پاراگراف .quote، پاراگراف .lead، لینک a.external و یک .card با متن بسازید.
  2. .quote::before { content: "“"; color: #0f766e; } را بگذارید و علامت نقل‌قول را ببینید.
  3. روی لینک با class external قانون a.external::after { content: " ↗"; } را بزنید.
  4. .lead::first-letter را بزرگ و فیروزه‌ای کنید؛ .lead::first-line را با font-weight: 600 استایل دهید.
  5. .card::before { content: ""; display: block; height: 4px; background: #0f766e; } را برای نوار بالا اضافه کنید.

اشتباهات رایج

  • نوشتن :before وقتی منظورتان وضعیت مثل :hover است — وضعیت یک دونقطه؛ جعبهٔ ساختگی دو دونقطه
  • فراموش کردن content تا ::before / ::after ظاهر نشوند
  • گذاشتن تنها نسخهٔ یک هشدار یا برچسب داخل ::after
  • انتظار معجزه از ::first-letter روی عنصر خالی یا فقط‌تصویر
  • یکی گرفتن ::first-line با «جملهٔ اول» — شکستن خط مرورگر خط را تعیین می‌کند

خلاصه

  • سودو‌المان با :: تکهٔ عنصر یا جعبهٔ تولیدشده را استایل می‌کند
  • ::before / ::after به content (رشته یا "") نیاز دارند
  • ::first-letter و ::first-line ابتدای بلوک متن را می‌گیرند
  • معنی حیاتی را در HTML نگه دارید
  • یک دونقطه = سودوکلاس؛ دو دونقطه = سودو‌المان
  • با نقل‌قول، پسوند لینک و پاراگراف lead تمرین کنید

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

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