سلکتورهای CSS
هر قانون CSS دو کار دارد: مشخص کند چه چیزی استایل بگیرد و چطور. «چطور» را قبلاً با property، value و واحدها تمرین کردهاید. این جلسه سراغ «چه چیزی» میرود، یعنی سلکتور که اول هر قانون میآید.
سلکتورهای CSS چیست؟
سلکتور الگویی است که به مرورگر میگوید استایلهای داخل بلوک declaration را روی کدام عناصر HTML اعمال کند. اگر عنصری در صفحه با سلکتور جور باشد، همهٔ استایلهای داخل { } را میگیرد.
انواع سلکتور پایه در یک نگاه
فعلاً با همین چهار مورد شروع کنید. در جلسههای بعد با combinator، attribute و pseudo-class هم آشنا میشوید؛ اما اول روی element، class، id و * مسلط شوید.
📊 سلکتورهای پایهٔ CSS
| سلکتور | چه چیزی را انتخاب میکند | مثال |
|---|---|---|
| Element (type) | همهٔ عناصری که نام تگشان همین است | p { … } |
| Class | عناصری که این class را دارند | .card { … } |
| Id | تنها عنصری که این id را دارد | #hero { … } |
| Universal | همهٔ عناصر (با احتیاط) | * { … } |
سلکتور element (type)
سلکتور element همان نام تگ است، بدون نقطه و بدون #. مثلاً h1 همهٔ تگهای <h1> صفحه را استایل میدهد و p همهٔ پاراگرافها را. وقتی بخواهید برای یک تگ ظاهر پایه و یکدست تعیین کنید، این پرکاربردترین ابزار است.
سلکتور element برای تیتر و پاراگراف
cssh1 {
color: #0f766e;
font-size: 2rem;
}
p {
color: #334155;
line-height: 1.6;
}
سلکتور type کجا به درد میخورد؟
برای تنظیمات پایهٔ کل سایت: رنگ متن body، وزن تیترها، فاصلهٔ فهرستها. اما اگر فقط بعضی از پاراگرافها باید متفاوت باشند، بهجای عوضکردن ظاهر همهٔ pها از class استفاده کنید.
سلکتور class
سلکتور class با یک نقطه (.) و بعد نام class نوشته میشود. در HTML هم عنصر را با class="card" علامت میزنید. یک class را میشود روی هر تعداد عنصر گذاشت؛ برای همین class اصلیترین ابزار برای استایلهای قابلاستفادهٔ مجدد است.
سلکتور class برای کارتهای قابلاستفادهٔ مجدد
css.card {
background: #f8fafc;
border: 1px solid #cbd5e1;
padding: 1rem;
border-radius: 8px;
}
نام class در HTML باید دقیقاً همان باشد
قانون .card فقط روی عناصری اثر میکند که واقعاً class="card" دارند (یا چند class که یکیشان card است). املا باید حرفبهحرف یکی باشد؛ .Card با .card فرق دارد.
سلکتور id
سلکتور id با یک # و بعد نام id نوشته میشود و در HTML با id="hero" مشخص میشود. id باید در صفحه یکتا باشد، یعنی فقط روی یک عنصر. برای بیشتر استایلها سراغ class بروید و id را برای یک جزء مهم و منحصربهفرد صفحه نگه دارید.
سلکتور id برای یک بنر یکتا
css#hero {
min-height: 40vh;
background: #0f172a;
color: #f8fafc;
padding: 2rem;
}
سلکتور universal (*)
سلکتور * همهٔ عناصر را انتخاب میکند. گاهی برای یک reset ساده به کار میرود، مثلاً تنظیم box-sizing. ولی اگر با آن به همهچیز رنگ یا margin بدهید، بهراحتی چیدمانتان بههم میریزد. برای ظاهر معمولی صفحه سلکتورهای دقیقتر انتخاب کنید.
استفادهٔ محتاطانه از سلکتور universal
css* {
box-sizing: border-box;
}
کنار هم گذاشتن سلکتورها در یک صفحه
stylesheet واقعی معمولاً ترکیبی از همه است: تنظیمات پایه با element، قطعههای تکرارشونده با class و فقط چند هدف خاص و یکتا با id. نمونهٔ کوتاه زیر همین عادت را نشان میدهد. لازم نیست برای هر قانون id بسازید.
ترکیب کوچکی از انواع سلکتور در یک صفحه
cssbody {
font-family: Georgia, serif;
margin: 0;
}
.card {
max-width: 28rem;
margin: 1rem;
}
#hero {
padding: 2rem;
}
class یا id؟ یک قاعدهٔ عملی
- برای دکمه، کارت، لینک منو و هر چیزی که ممکن است دوباره استفاده شود class بگذارید
- فقط وقتی هدف واقعاً یکتاست (مثلاً بنر اصلی صفحه یا کادر جستوجوی اصلی) از id استفاده کنید
- برای هر باکس یک id جدید نسازید؛ هم جلوی استفادهٔ مجدد را میگیرد و هم در درسهای بعدی دربارهٔ cascade دردسر درست میکند
خودتان امتحان کنید
- در یک صفحهٔ تمرینی یک
<h1>، دو<p>، یک<div class="card">و یک<section id="hero">بگذارید. - یک قانون element برای
h1وpبنویسید. - برای
.cardفاصلهٔ داخلی (padding)، پسزمینهٔ روشن و border تعیین کنید. - برای
#heroپسزمینهٔ تیره و متن روشن بگذارید. - اختیاری:
* { box-sizing: border-box; }را اضافه کنید و ببینید padding داخل کارت رفتار قابلپیشبینیتری پیدا میکند.
اشتباهات رایج
- نوشتن
card { }بهجای.card { }: بدون نقطه، مرورگر دنبال تگی به نام card میگردد که در HTML وجود ندارد - نوشتن
hero { }بهجای#hero { }: علامت # جا افتاده است - گذاشتن
class="card"در HTML ولی نوشتن.crdدر CSS: چون نامها نمیخوانند، هیچ استایلی اعمال نمیشود - دادن یک
idتکراری به چند عنصر: HTML نامعتبر میشود و هدفگیری قابلپیشبینی نیست - استفاده از سلکتور type برای طراحی یک بلوک خاص: وقتی فقط یک بلوک را میخواستید، همهٔ
pها یاdivهای صفحه عوض میشوند
خلاصه
- سلکتور مشخص میکند استایلهای یک قانون به کدام عناصر HTML برسد
- سلکتور element همان نام تگ است (
h1،p) - سلکتور class با نقطه شروع میشود (
.card) و با ویژگیclassدر HTML جور میشود - سلکتور id با # شروع میشود (
#hero) و باید یک عنصر یکتا را هدف بگیرد *همهچیز را انتخاب میکند؛ برای reset سنجیده خوب است، برای تزئین کل صفحه نه- برای اجزای قابلاستفادهٔ مجدد class بگذارید و id را کم و فقط برای موارد یکتا نگه دارید
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود