اختصاصیت CSS (CSS Specificity)
«اختصاصیت CSS» الگوریتمی است که تعیین می کند کدام قانون در نهایت روی یک عنصر اعمال شود. وقتی چند قانون یک عنصر را هدف می گیرند، قانونی با اختصاصیت بیشتر برنده می شود و سبک آن اعمال می گردد.
اختصاصیت CSS چیست؟
اگر برای یک عنصر p
رنگ قرمز تعریف کنید و همزمان کلاس دیگری رنگ سبز بدهد، چون کلاس اختصاصیت بیشتری از عنصر دارد، رنگ سبز نمایش داده می شود. همچنین شناسه (ID) از کلاس قوی تر است و سبک درون خطی از همه قوی تر است.
نمونه ساده مقایسه
p { color: red; }
.test { color: green; }
#demo { color: blue; }
/* نتیجه روی <p id=\"demo\" class=\"test\">: آبی؛ چون ID قوی تر است */
نکته: سبک درون خطی مانند style="color:pink;"
از همه قوی تر است و بر قوانین ID و کلاس و عنصر غلبه می کند.
سلسله مراتب اختصاصیت (Specificity Hierarchy)
- سبک درون خطی: بالاترین اولویت
- انتخاب گرهای شناسه (ID): وزن 1-0-0
- کلاس ها، انتخاب گرهای ویژگی و شبه کلاس ها: وزن 0-1-0
- عناصر و شبه عناصر: وزن 0-0-1
- انتخاب گر سراسری و
:where()
: وزن 0-0-0
مثال وزن ها
#demo { color: blue; } /* 1-0-0 */
p#demo { color: orange; } /* 1-0-1 ← برنده */
.test { color: green; } /* 0-1-0 */
p.test { color: green; } /* 0-1-1 */
p { color: red; } /* 0-0-1 */
مثال های بیشتر اختصاصیت
اختصاصیت برابر: قانونِ دیرتر برنده است
h1 { background-color: yellow; }
h1 { background-color: red; } /* این قانون اعمال می شود */
ID از انتخاب گر ویژگی قوی تر است
#myDiv { background-color: yellow; }
div[id=myDiv] { background-color: blue; } /* نادیده می شود */
کلاس از عنصر قوی تر است
.intro { background-color: yellow; }
h1 { background-color: red; } /* برای <h1 class=\"intro\"> رنگ زرد اعمال می شود */
قوانین نزدیک تر بر خارجی ها می چربند
/* فایل خارجی */
#content h1 { background-color: red; }
/* در خود HTML (درون <style>) */
#content h1 { background-color: yellow; } /* این یکی اعمال می شود */
هشدار: وابستگی زیاد به وزن های بالا نگه داری را سخت می کند. تا حد امکان از افزایش بی رویه اختصاصیت یا تو در تویی افراطی بپرهیزید.
مطالعه تکمیلی
برای اندازه ها به واحدها رجوع کنید. جهت هدف گیری دقیق مقادیر، صفحه انتخاب گرهای ویژگی را ببینید. همچنین پیش از وابستگی به وزن ها، ساختار HTML و سادگی قوانین را بهبود دهید.
منابع پیشنهادی: معرفی جامع اختصاصیت CSS و مرجع :where() برای صفر کردن وزن گروهی از انتخاب گرها.