Skip to content
GitHub

Specificity & The Cascade (ဘယ် Rule က အနိုင်ရမလဲ)

CSS ဆိုတဲ့ နာမည်ထဲက C က Cascading — “အဆင့်ဆင့် စီးဆင်းခြင်း” လို့ အဓိပ္ပာယ်ရပါတယ်။ Element တစ်ခုအတွက် style rule အများကြီး ရေးမိတဲ့အခါ၊ Browser က ဘယ်ဟာကို နာခံရမလဲ ဆုံးဖြတ်ဖို့ စည်းမျဉ်း (၃) ဆင့် သုံးပါတယ်။

  1. Importance!important ပါသလား?
  2. Specificity — Selector ရဲ့ အလေးချိန် (တိကျမှု) ဘယ်လောက်လဲ?
  3. Source Order — အထက်ပါ နှစ်ခု တူညီနေရင်၊ နောက်ဆုံး ရေးထားတဲ့ rule က အနိုင်ရတယ်။

Specificity ကို တွက်ချက်ခြင်း

Section titled “Specificity ကို တွက်ချက်ခြင်း”

Selector တစ်ခုစီမှာ အလေးချိန် ရှိပါတယ်။ အလေးချိန် များတဲ့ selector က အနိုင်ရပါတယ်။

Selector အမျိုးအစားဥပမာအလေးချိန်
Inline stylestyle="..."1000
ID#header100
Class / Attribute / Pseudo-class.btn [type] :hover10
Element / Pseudo-elementdiv p ::before1
CSS Specificity — selector အမျိုးအစားအလိုက် အလေးချိန်နှင့် တွက်ချက်ပုံ

အောက်က 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 နဲ့ အရောင်ကို အလိုလို ရသွားမယ် */