آموزش جامع انتخابگرها در CSS
🎯 اهداف یادگیری
- آشنایی با انواع انتخابگرهای CSS
- یادگیری نحوه استفاده از هر نوع سلکتور
- درک اولویتبندی و تخصصیتر بودن انتخابگرها
- توانایی ترکیب انتخابگرها برای استایلدهی دقیق
📌 انتخابگرها چیستند؟
انتخابگرها (Selectors) در CSS الگوهایی هستند که برای انتخاب عناصر HTML جهت اعمال استایل استفاده میشوند:
css
h1 { color: blue; text-align: center;}
انواع اصلی انتخابگرها:
- انتخابگرهای ساده: (عنصر، کلاس، شناسه) - برای انتخاب مستقیم عناصر
- انتخابگرهای ترکیبی: ترکیب چند انتخابگر برای انتخاب دقیقتر
- انتخابگرهای شبهکلاس: برای انتخاب عناصر در حالتهای خاص
- انتخابگرهای شبهعنصر: برای استایلدهی به بخشهایی از عناصر
📌 انتخابگرهای ساده
این انتخابگرها پایهایترین نوع سلکتورها هستند:
css
/* انتخابگر عنصر */p { color: red;}/* انتخابگر کلاس */.warning { background-color: yellow;}/* انتخابگر شناسه */#header { border: 1px solid black;}
ویژگیهای انتخابگرهای ساده:
- انتخابگر عنصر: تمام عناصر از یک نوع را انتخاب میکند (مثل p, div, h1)
- انتخابگر کلاس: عناصری با کلاس مشخص را انتخاب میکند (با نقطه شروع میشود)
- انتخابگر شناسه: عنصر با شناسه منحصر به فرد را انتخاب میکند (با # شروع میشود)
📌 انتخابگرهای ترکیبی
این انتخابگرها امکان ترکیب چند شرط برای انتخاب دقیقتر عناصر را فراهم میکنند:
css
/* انتخابگر فرزند مستقیم */div > p { color: green;}/* انتخابگر فرزندان (مستقیم و غیرمستقیم) */div p { font-size: 1.2rem;}/* انتخابگر چند عنصر */h1, h2, h3 { font-family: 'Arial', sans-serif;}
انواع انتخابگرهای ترکیبی:
- فرزند مستقیم (A > B): فقط عناصر B که فرزند مستقیم A هستند
- فرزندان (A B): تمام عناصر B که درون A هستند (مستقیم یا غیرمستقیم)
- خواهر و برادر مجاور (A + B): عنصر B که بلافاصله بعد از A آمده باشد
- خواهر و برادر عمومی (A ~ B): تمام عناصر B که بعد از A آمده باشند
📌 انتخابگرهای شبهکلاس (Pseudo-classes)
شبهکلاسها برای انتخاب عناصر در حالتهای خاص استفاده میشوند:
css
/* لینکهای بازدید نشده */a:link { color: blue;}/* لینکهای بازدید شده */a:visited { color: purple;}/* هاور روی عنصر */button:hover { background-color: #eee;}/* عنصر فعال (مثل کلیک روی دکمه) */button:active { transform: scale(0.98);}
شبهکلاسهای پرکاربرد:
- :hover - وقتی موس روی عنصر است
- :active - وقتی عنصر فعال است (مثل کلیک)
- :focus - وقتی عنصر فوکوس شده (مثل input)
- :nth-child() - انتخاب عناصر بر اساس موقعیت
- :first-child - اولین فرزند والد
- :last-child - آخرین فرزند والد
📌 انتخابگرهای شبهعنصر (Pseudo-elements)
برای استایلدهی به بخشهای خاصی از عناصر استفاده میشوند:
css
/* اولین خط پاراگراف */p::first-line { font-weight: bold;}/* اولین حرف پاراگراف */p::first-letter { font-size: 2em; color: red;}/* محتوای قبل از عنصر */.warning::before { content: "⚠️ ";}/* محتوای بعد از عنصر */.price::after { content: " تومان";}
شبهعنصرهای پرکاربرد:
- ::before - درج محتوا قبل از عنصر
- ::after - درج محتوا بعد از عنصر
- ::first-line - اولین خط متن
- ::first-letter - اولین حرف متن
- ::selection - متن انتخاب شده توسط کاربر
📌 اولویت انتخابگرها (Specificity)
وقتی چند قانون CSS برای یک عنصر وجود دارد، مرورگر از قاعده Specificity برای تعیین قانون قابل اجرا استفاده میکند:
انتخابگر | امتیاز |
---|---|
!important | 10000 |
استایل inline | 1000 |
شناسه (id) | 100 |
کلاس، شبهکلاس، attribute | 10 |
عنصر، شبهعنصر | 1 |
نکته مهم: از !important فقط در موارد ضروری استفاده کنید چون رفع آن در آینده دشوار است.
📌 تمرین عملی
کد CSS زیر را کامل کنید تا موارد خواسته شده را پیادهسازی کند:
css
/* تمام لینکهای منو را آبی کنید */.menu a { color: blue;}/* وقتی روی لینکها هاور میشود رنگ آنها قرمز شود *//* کد شما *//* اولین آیتم منو را پررنگ کنید *//* کد شما *//* بعد از هر لینک در منو یک خط عمودی اضافه کنید *//* کد شما */
راهنمای تمرین:
- برای هاور از شبهکلاس :hover استفاده کنید
- برای انتخاب اولین آیتم از :first-child استفاده کنید
- برای اضافه کردن خط عمودی از ::after و border-right استفاده کنید
📌 نکات پیشرفته
برخی از تکنیکهای پیشرفته در استفاده از انتخابگرها:
1. انتخابگرهای attribute
css
/* تمام inputهای نوع text */input[type="text"] { border: 1px solid #ccc;}/* تمام لینکهایی که با https شروع میشوند */a[href^="https"] { background: url('lock-icon.png') no-repeat right;}
📌 قدم بعدی
در درس بعدی با مدل جعبهای آشنا خواهیم شد!