در CSS، کامبیناتورها (Combinators) ابزارهایی هستند که به شما کمک میکنند رابطه بین سلکتورها را مشخص کنید. دو مورد از پرکاربردترین کامبیناتورها، فاصله ( ) و علامت بزرگتر (> ) هستند. این دو کامبیناتور اگرچه شبیه به نظر میرسند، اما رفتار کاملاً متفاوتی دارند.
کامبیناتور فاصله (Descendant Combinator)
کامبیناتور فاصله (که به آن Descendant Combinator نیز گفته میشود) برای انتخاب تمام عناصری استفاده میشود که فرزند (مستقیم یا غیرمستقیم) یک عنصر والد هستند. این کامبیناتور تمام سطوح تو در تو را در نظر میگیرد.
مثال ۱:
div p {
color: red;
}
در این مثال، تمام تگهای <p>
که درون <div>
قرار دارند (حتی اگر چندین سطح تو در تو باشند) انتخاب شده و رنگ متن آنها قرمز میشود.
کامبیناتور بزرگتر (Child Combinator)
کامبیناتور > (که به آن Child Combinator گفته میشود) فقط عناصری را انتخاب میکند که فرزند مستقیم (فقط یک سطح پایینتر) عنصر والد باشند. این کامبیناتور سطوح عمیقتر را در نظر نمیگیرد.
مثال ۲:
div > p {
font-weight: bold;
}
در این مثال، فقط تگهای <p>
که مستقیماً درون <div>
قرار دارند (بدون هیچ عنصر واسطهای) انتخاب شده و متن آنها پررنگ میشود.
مقایسه عملی با مثال
برای درک بهتر تفاوت این دو کامبیناتور، به ساختار HTML زیر توجه کنید:
مثال ۳:
<div>
<p>پاراگراف مستقیم (تأثیر میپذیرد از div > p و div p)</p>
<section>
<p>پاراگراف غیرمستقیم (فقط تأثیر میپذیرد از div p)</p>
</section>
</div>
در این مثال:
- کامبیناتور
div p
روی هر دو پاراگراف تأثیر میگذارد - کامبیناتور
div > p
فقط روی پاراگراف اول تأثیر میگذارد
خلاصه درس
- فاصله ( ): انتخاب تمام فرزندان (مستقیم و غیرمستقیم) - جامعتر
- بزرگتر (> ): انتخاب فقط فرزندان مستقیم - دقیقتر
- کامبیناتور فاصله میتواند عملکرد کندتری داشته باشد چون کل DOM را جستجو میکند
- کامبیناتور بزرگتر برای عملکرد بهتر و انتخاب دقیقتر توصیه میشود
- در طراحیهای پیچیده، ترکیب این دو کامبیناتور میتواند بسیار مفید باشد
با درک صحیح از این تفاوتها، میتوانید استایلدهی دقیقتر و کارآمدتری در پروژههای خود داشته باشید. انتخاب بین این دو کامبیناتور بستگی به نیاز خاص شما در هر بخش از طراحی دارد.