ما هي خصوصية محدد CSS وكيف تعمل؟
يحدد المتصفح الأنماط التي يجب عرضها على عنصر بناءً على خصوصية قواعد CSS. نفترض أن المتصفح قد حدد بالفعل القواعد التي تطابق عنصرًا معينًا. من بين القواعد المطابقة، يتم حساب الخصوصية، وهي أربع قيم مفصولة بفاصلة، a, b, c, d
لكل قاعدة بناءً على ما يلي:
a
ما إذا كانت الأنماط المضمنة مستخدمة. إذا كان إعلان الخاصية نمطًا مضمنًا على العنصر، فإنa
يساوي 1، وإلا فهو 0.b
هو عدد محددات الهوية (ID selectors).c
هو عدد محددات الفئات والسمات والفئات الزائفة (classes, attributes and pseudo-classes selectors).d
هو عدد محددات الوسوم والعناصر الزائفة (tags and pseudo-elements selectors).
الخصوصية الناتجة ليست درجة، بل مصفوفة من القيم يمكن مقارنتها عمودًا بعمود. عند مقارنة المحددات لتحديد أي منها يتمتع بأعلى خصوصية، انظر من اليسار إلى اليمين، وقارن أعلى قيمة في كل عمود. لذا فإن قيمة في العمود b
ستتجاوز القيم في العمودين c
و d
، مهما كانت. وعلى هذا النحو، فإن خصوصية 0,1,0,0
ستكون أكبر من 0,0,10,10
.
في حالات الخصوصية المتساوية: القاعدة الأحدث هي التي تُحتسب. إذا كنت قد كتبت نفس القاعدة في ورقة الأنماط الخاصة بك (بغض النظر عما إذا كانت داخلية أو خارجية) مرتين، فإن القاعدة السفلية في ورقة الأنماط الخاصة بك هي الأقرب إلى العنصر المراد تصميمه، وتعتبر أكثر تحديدًا وبالتالي سيتم تطبيقها.
سأكتب قواعد CSS بخصوصية منخفضة بحيث يمكن تجاوزها بسهولة إذا لزم الأمر. عند كتابة كود مكتبة مكونات واجهة المستخدم CSS، من المهم أن تكون لها خصوصية منخفضة حتى يتمكن مستخدمو المكتبة من تجاوزها دون استخدام قواعد CSS معقدة للغاية لمجرد زيادة الخصوصية أو اللجوء إلى !important
.