آشنایی با انتخاب‌کننده‌ها و ترکیب‌کننده‌ها در CSS

css selectors combinators guide
20 آبان 1403

انتخاب‌کننده‌ها در CSS نقش حیاتی در تعیین نحوه اعمال استایل بر روی عناصر HTML دارند. با استفاده از انتخاب‌کننده‌ها می‌توانید استایل‌های خاصی را برای یک یا چند عنصر HTML مشخص کنید. برای شروع، باید بدانیم که انتخاب‌کننده‌ها می‌توانند به چند دسته تقسیم شوند: انتخاب‌کننده‌های نوعی، کلاسی، شناسه‌ای و جهانی.

یکی از ویژگی‌های جالب CSS انتخاب‌کننده‌های ترکیبی هستند که با استفاده از آن‌ها می‌توان به عناصر خاص در شرایط خاص استایل داد. ترکیب‌کننده‌هایی مانند فرزند، مجاور و عمومی می‌توانند در CSS بسیار مفید باشند. انتخاب‌کننده‌های ترکیبی همچنین به ما اجازه می‌دهند تا هوش بیشتری در استایل‌دهی به کار ببریم.

به‌عنوان مثال، با استفاده از ترکیب‌کننده‌های CSS می‌توانیم فقط به عناصر خاص در یک ساختار درختی مشخص استایل بدهیم. این قابلیت به طراحان وب امکان می‌دهد تا کنترل بیشتری روی نحوه نمایش سایتی که طراحی می‌کنند داشته باشند.

همچنین توجه به این نکته مهم است که انتخاب‌کننده‌ها می‌توانند تأثیر مستقیم بر روی کارایی و عملکرد صفحه وب داشته باشند. انتخاب‌کننده‌های پیچیده می‌توانند باعث کندی محاسبات مرورگر شوند، بنابراین باید به‌طور معقول استفاده شوند.

در ادامه مثالی از نحوه استفاده از انتخاب‌کننده‌ها و ترکیب‌کننده‌ها ارائه شده است. این مثال نحوه استفاده از تکنیک‌های موجود در CSS برای دستیابی به نتایج مطلوب را نشان می‌دهد که باید به صورت مرتب و کد شده ارائه شود.

body > header {\r\n  background-color: #f5f5f5;\r\n}\r\n\r\n.main-content + .sidebar {\r\n  margin-left: 20px;\r\n}\r\n\r\nnav ul li > a:hover {\r\n  color: #ff0000;\r\n}\r\n

در کد بالا:
body > header body > header: این انتخاب‌کننده تمامی عناصر header را که مستقیماً درون عنصر body قرار گرفته‌اند انتخاب می‌کند.
.main-content + .sidebar.main-content + .sidebar: این انتخاب‌کننده عنصر .sidebar را انتخاب می‌کند که بلافاصله پس از هر عنصر .main-content قرار گرفته است.
nav ul li > a:hovernav ul li > a:hover: این انتخاب‌کننده تمام a هایی که مستقیم فرزند یک li درون یک ul هستند را تعریف کرده تا در حالت hover رنگ متن‌ آن‌ها به قرمز تغییر کند.

سوالات متداول

؟

چگونه می‌توانم استایل خاصی را به یک عنصر HTML با کلاس خاص اختصاص دهم؟

؟

تفاوت بین انتخاب‌کننده فرزند و انتخاب‌کننده مجاور چیست؟

؟

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