Specificity & The Cascade (ဘယ် Rule က အနိုင်ရမလဲ)
The Cascade ဆိုတာ ဘာလဲ?
Section titled “The Cascade ဆိုတာ ဘာလဲ?”CSS ဆိုတဲ့ နာမည်ထဲက C က Cascading — “အဆင့်ဆင့် စီးဆင်းခြင်း” လို့ အဓိပ္ပာယ်ရပါတယ်။ Element တစ်ခုအတွက် style rule အများကြီး ရေးမိတဲ့အခါ၊ Browser က ဘယ်ဟာကို နာခံရမလဲ ဆုံးဖြတ်ဖို့ စည်းမျဉ်း (၃) ဆင့် သုံးပါတယ်။
- Importance —
!importantပါသလား? - Specificity — Selector ရဲ့ အလေးချိန် (တိကျမှု) ဘယ်လောက်လဲ?
- Source Order — အထက်ပါ နှစ်ခု တူညီနေရင်၊ နောက်ဆုံး ရေးထားတဲ့ rule က အနိုင်ရတယ်။
Specificity ကို တွက်ချက်ခြင်း
Section titled “Specificity ကို တွက်ချက်ခြင်း”Selector တစ်ခုစီမှာ အလေးချိန် ရှိပါတယ်။ အလေးချိန် များတဲ့ selector က အနိုင်ရပါတယ်။
| Selector အမျိုးအစား | ဥပမာ | အလေးချိန် |
|---|---|---|
| Inline style | style="..." | 1000 |
| ID | #header | 100 |
| Class / Attribute / Pseudo-class | .btn [type] :hover | 10 |
| Element / Pseudo-element | div p ::before | 1 |
လက်တွေ့ ဥပမာ
Section titled “လက်တွေ့ ဥပမာ”အောက်က HTML မှာ စာသားဟာ ဘယ်အရောင် ဖြစ်မလဲ ကြည့်ကြရအောင်။
<p id="intro" class="lead">မင်္ဂလာပါ</p>p { color: black; } /* အလေးချိန် = 1 */.lead { color: green; } /* အလေးချိန် = 10 */#intro { color: blue; } /* အလေးချိန် = 100 */ရလဒ်: စာသားက အပြာရောင် (blue) ဖြစ်မယ်→ #intro (100) က အားအကြီးဆုံးမို့ အနိုင်ရတယ်Source Order (နောက်ဆုံး ရေးတာ အနိုင်ရခြင်း)
Section titled “Source Order (နောက်ဆုံး ရေးတာ အနိုင်ရခြင်း)”Specificity တူညီ နေရင်တော့၊ CSS ဖိုင်ထဲမှာ နောက်ဆုံး ရေးထားတဲ့ rule က အနိုင်ရပါတယ်။
.btn { background: blue; }.btn { background: red; } /* ← ဒါ အနိုင်ရမယ် (နောက်မှ ရေးထားလို့) */ရလဒ်: button က အနီရောင် (red) ဖြစ်မယ်!important — အားလုံးကို ကျော်ဖြတ်သူ
Section titled “!important — အားလုံးကို ကျော်ဖြတ်သူ”!important ထည့်လိုက်ရင် specificity ဘယ်လောက်များများ ကျော်ဖြတ်ပြီး အနိုင်ရပါတယ်။ ဒါပေမယ့် အလွန်အကျွံ မသုံးသင့်ပါဘူး — နောက်ပိုင်း style ပြင်ရတာ အရမ်း ခက်ခဲသွားစေလို့ပါ။
p { color: blue !important; } /* ဘယ် rule မှ ကျော်လို့ မရတော့ဘူး */Inheritance (အမွေဆက်ခံခြင်း)
Section titled “Inheritance (အမွေဆက်ခံခြင်း)”Property အချို့ (ဥပမာ — color, font-family, font-size) ကို parent element မှာ ပေးလိုက်ရင်၊ အထဲက child element တွေက အလိုအလျောက် အမွေဆက်ခံ ပါတယ်။
body { font-family: "Padauk", sans-serif; color: #333;}/* body အထဲက စာသား အားလုံး ဒီ font နဲ့ အရောင်ကို အလိုလို ရသွားမယ် */