نظرسنجی
بیشترین استفاده شما از اینترنت در چه زمینه ای است؟






 
خروجی RSS

نگاهی به Combinator ها در Css


17 دی 1390

بعد از مدت ها بلاخره فرصتی پیش اومد تا مجددا مقاله ای بنویسم. این بار قصد دارم با مقاله ای در خصوص CSS اما خارج از دنیای طراحی و ساخت آیتم های مختلف در خدمت شما باشم.

شاید تا به حال کمتر نام Combinator  ها را در CSS شنیده باشید، اما مطمئنا به وفور از برخی از آن ها استفاده کرده اید. در واقع همانطور که از نام Combinator بر می آید، تنها یک ترکیب کننده است، ترکیب کننده ی چند گزینشگر ساده مثل Tag Selector و یا Class Selector که به عنوان تعیین کننده ی ارتباط بین دو آن ها ایفای نقش می کند. به طور کلی Combinator ها به چهار گروه مختلف تقسیم می شوند که در ادامه به بررسی هر کدام خواهیم پرداخت.

Descendant Selector

از این نوع گزینشگر یکی از پر کاربرد ترین نوع گزینشگر هایی است که بدون شک از آن استفاده کرده اید، کد html زیر را در نظر بگیرید:

<ul>
  <li>Item 1</li>
  <li>
    <ol>
      <li>Sub-item A</li>
      <li>Sub-item B</li>
    </ol>
  </li>
</ul>

و فرض کنید استایل زیر را به li ها نسبت داده ایم:

ul li
{
      background-color: Red;
}

همانطور که واضح است کلیه ی li ها به رنگ قرمز در می آیند. این نوع گزینشگر تمام عناصر مورد نظر را در هر عمقی، صرف نظر از عنصر والد آن ها تحت تاثیر قرار می دهد، به همین دلیل به آن Descendant (نوادگان) گفته می شود. در واقع در اینجا ترکیبی از دو Tag Selector را داریم که حد واسط آن ها کاراکتر Space قرار گرفته است. درسته! Space در اینجا یک Combinator محسوب می شود.

حال فرض کنید بخواهیم  تنها li های درون ul را انتخاب کنیم، بدیهی است که با Descendant Selector چنین کاری ممکن نیست، به این منظور لازم است از Child Selector استفاده کنیم.

Child Selector

Child Selector یا گزینشگر فرزندی امکان انتخاب فرزندان یک عنصر را در اختیار قرار می دهد، توجه داشته باشید که عناصر فرزند عناصری هستند که مستقیما داخل یک عنصر قرار دارند یا به عبارتی در عمق اول نسبت به عنصر والد خود قرار دارند. در مثال بالا Item 1 فرزند ul محسوب می شود، در حالی که Sub-item A، descendant عنصر ul به حساب می آید. با این تفاسیر برای انتخاب فرزندان از علامت > به عنوان Combinator استفاده می کنیم:

ul > li
{
      background-color: Red;
}

Adjacent Sibling Selector

این نوع selector که شاید کاربردی کمتر از دو نوع قبل داشته باشد، برای انتخاب عنصر sibling (برادر) یک عنصر کاربرد دارد. در واقع sibling به دو عنصری گفته می شود که دارای parent های یکسان باشند و adjacent به معنی عنصری است که دقیقا بعدا از عنصر مورد نظر به عنوان sibling ظاهر می شود. برای درک بهتر مثال زیر را مشاهده بفرمایید:

<h2>Heading</h2>
<p>The selector above matches this paragraph.</p>
<p>The selector above does not match this paragraph.</p>
h2 + p
{
      background-color: Red;
}

دو تگ p به عنوان sibling های عنصر h2 شناخته می شوند، اما رنگ قرمز تنها به تگ p اول نسبت داده خواهد شد، به دلیل اینکه مستقیما پس از h2 قرار گرفته و به عبارتی adjacent محسوب می شود.

General Sibling Selector

این selector بر خلاف نوع قبل کلیه ی sibling های قرار گرفته پس از عنصر مورد نظر را تحت پوشش قرار می دهد و به همین دلیل از آن به عنوان General یاد می شود. Combinator مورد استفاده در این گزینشگر علامت ~ می باشد:

h2 ~ p
{
      background-color: Red;
}

با توضیحات داده شده در قسمت قبل فکر نمی کنم نیاز به بیان جزئیات بیشتری باشد، تنها نکته ی قابل ذکر این است که 3 selector ای که پیش تر توضیح داده شد از گزینشگر های موجود در CSS 2.1 بودند در حالی که این گزینشگر در نسخه ی سوم به CSS اضافه شد.

 

موفق باشید - عماد فیض

تعداد آراء: 26 رای
یادداشت ها
سردار بهرام
1390/10/23 - 18:52:14
وااای اینجا چقدر خوشگل شده. خیلی وقت بود سر نزده بودم. قالبتون خیلی عالیه، هرچی نگاهش میکنم دارم ذوق میکنم :دی ، زیبا و سبک. با این جی پی آر اس که با بدبختی سایت باز میکنه این سایت سه سوت باز شد.
مطلبتون هم مثل همه مطالب قبلی عالی بود.
عماد:
ممنون دوست من، لطف داری شما
موفق باشید
yasin
1390/11/28 - 20:49:56
سلام پیج رنک من کمه چون تازه سایتمو باز کردم ولی بازدید بدکی ندارم 3 ماهه سایت رو زدم ولی کاربرانم مرتب سر می زنند و هر روز حدود1500بازدید داررم.
اگه می تونی ادم کن من نیز شما را اد خواهم کرد.
3000لینک اندیکس شده در گوگل دارم.

شبکه اجتماعی په پو
www.papo.ir
mehdi
1391/01/20 - 16:40:26
سلام داش/خلاصه بگم منو لینک کن به نام ((ترفند و تکنولوژی ))منم به هر نامی که بخوای لینکت می کنم بیا تو وبلاگم نظر بده اون نامی که می خوای لینکت کنم ممنون
علیرضا
1391/02/03 - 19:39:03
خیلی خوبه. ممنون
یادداشت خود را ثبت کنید



کد امنیتی:    =
loader
در حال ارسال - چند لحظه صبر کنید...