CSS Custom Properties

เน€เธ„เธขเธซเธฃเธทเธญเน„เธกเนˆ?

เนƒเธ™เธ‚เธ“เธฐเธ—เธตเนˆเธเธณเธฅเธฑเธ‡เธขเธณ CSS เน‚เธ”เธขเนƒเธซเน‰เนเธ•เนˆเธฅเธฐ element เธกเธต เธชเธตเธ—เธตเนˆเน€เธซเธกเธทเธญเธ™เธเธฑเธ™ เนเธ•เนˆเนเธฅเน‰เธงเธ—เธณเน„เธ›เน€เธฃเธทเนˆเธญเธขเน†เน€เธเธดเธ”เธญเธขเธฒเธเธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เธ„เนˆเธฒเธชเธตเธ‚เธถเน‰เธ™เธกเธฒเธญเธตเธ เธ—เธตเธ™เธตเน‰เธซเธฅเธฐเธ›เธฑเธเธซเธฒเธเน‡เน€เธเธดเธ”เธ‚เธถเน‰เธ™เน€เธกเธทเนˆเธญเธ„เธธเธ“เธ•เน‰เธญเธ‡เน„เธฅเนˆเน„เธ›เน€เธ›เธฅเธตเนˆเธขเธ™ property value เธ‚เธญเธ‡เธชเธตเนเธ•เนˆเธฅเธฐ element เธ—เธตเนˆเน€เธขเธญเธฐเนเธขเธฐเน„เธ›เธซเธกเธ”เธŠเธงเธ™เธชเธฑเธšเธชเธ™ เน€เธซเน‰เธญเน€เธ›เน‡เธ™เธ—เน‰เธญ เธ—เธตเธ™เธตเน‰เธซเธฅเธฐเน€เธฃเธฒเธˆเธฐเธกเธฒเนเธเน‰เน„เธ‚เธ›เธฑเธเธซเธฒเธ™เธตเน‰เธ”เน‰เธงเธข CSS Custom Properties


Custome Properties เธเน‡เธ„เธทเธญ

เน€เธ›เธฃเธตเธขเธšเน€เธชเธกเธทเธญเธ™เธ•เธฑเธงเนเธ›เธฃ เน„เธงเน‰เนƒเธŠเน‰เธเธณเธซเธ™เธ” เธ„เนˆเธฒ


เธซเธฅเธฑเธเธเธฒเธฃ ?

เน€เธเน‡เธˆเธฐเธชเธฃเธฒเน‰เธ‡ properties เน„เธงเน‰เนƒเธ™ element เนƒเธ”เธเน‡เน„เธ”เน‰เน€เธžเธตเธขเธ‡เนเธ•เนˆเธงเนˆเธฒเธ•เธฒเธก เธชเธฒเธเธฅเน‚เธฅเธ เน€เธ‚เธฒเธˆเธฐเธ›เธฃเธฐเธเธฒเธจเน„เธงเน‰เนƒเธ™ :root เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธงเนˆเธฒ :root เธ™เธฑเน‰เธ™เน€เธ›เน‡เธ™ Scope เธชเธนเธ‡เธชเธธเธ”เนƒเธ™เธซเธ™เน‰เธฒ html เธ—เธณเนƒเธซเน‰ element เธ•เนˆเธฒเธ‡เน†
เธกเธฒเธ•เธฃเธฒเธเธฒเธ™เธ•เธฑเน‰เธ‡เธŠเธทเนˆเธญเธเน‡เธˆเธฐเนƒเธŠเน‰
(–เธŠเธทเนˆเธญ-เธชเธทเนˆเธญเธ„เธงเธฒเธกเธซเธกเธฒเธข : value)

เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธเธฒเธฃเธ•เธฑเนˆเธ‡เธŠเธทเนˆเธญ custom properties

--primary-color:rgb(217, 14, 235); 
--header-size:64px; 
--solfr-border:2px solid;

เธชเธฒเธกเธฒเธฃเธ–เน€เธฃเธตเธขเธเนƒเธŠเน‰ properties เธ—เธตเนˆเธซเธ™เธ”เธซเธ™เธ”เน„เธ”เน‰ เธ•เธฑเธงเธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธเน‡เนเธ„เนˆเนƒเธชเนˆ var()

h1{
    font-size:var(--header-size)
}

เธ–เน‰เธฒเธ‡เธ‡เน†เธงเนˆเธฒเธ—เธณเน„เธกเธ•เน‰เธญเธ‡เนƒเธŠเน‰เธฅเธญเธ‡เธกเธฒเธ”เธนเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เนเธšเธšเธ›เธเธ•เธด


เธกเธฒเธฅเธญเธ‡เธ”เธนเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เนเธšเธšเน„เธกเนˆเนƒเธŠเน‰ custom properties

เธชเธกเธกเธธเธ•เธดเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธชเธฃเธฒเน‰เธ‡ element เธ”เธฑเธ‡เธ™เธตเน‰

<h1>this is header1<h1>
<p>this is paragraph</p>
<div>this is div</div>

เธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰ h1 เนเธฅเธฐ p เธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เธชเธตเธญเธฑเธเธฉเธฃ เนเธฅเธฐdiv เธˆเธฐเน€เธ›เธฅเธตเนˆเธขเธ™เธชเธตเธžเธทเน‰เธ™เธซเธฅเธฑเธ‡ เน‚เธ”เธขเนƒเธŠเน‰เธชเธต เธŠเธกเธžเธน เธ•เธฒเธกเธ™เธตเน‰

h1{
   color:pink; เธชเธตเธญเธฑเธเธฉเธฃ
}p{
   color:pink; เธชเธตเธญเธฑเธเธฉเธฃ
}div{
   width:100px; เธเธณเธซเธ™เธ”เธ‚เธ™เธฒเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เนเธชเธ”เธ‡เธœเธฅเธฅเธฑเธžเน€เธ›เน‡เธ™เธชเธตเนˆเน€เธซเธฅเธตเนˆเธขเธก
   height:100px;
   background-color:pink; เธชเธตเธžเธทเน‰เธ™เธซเธฅเธฑเธ‡
}

เนเธฅเธฐเธ™เธตเนˆเธ„เธทเธญเธœเธฅเน„เธกเน‰เธ—เธตเนˆเน„เธ”เน‰เธฃเธฑเธš เน€เธญเน‰เธขเธœเธฅเธฅเธฑเธžเธ˜เนŒ ?

เธเน‡เธ›เธเธ•เธดเธ”เธตเธ„เธฃเธฑเธš เนเธ•เนˆเธชเธกเธกเธธเธ•เธดเธญเธขเธฒเธเน€เธ›เธฅเธตเนˆเธขเธ™เนƒเธซเน‰เธชเธตเธŠเธกเธžเธนเธ—เธธเธเธชเธตเธเธฅเธฒเธขเน€เธ›เน‡เธ™เน€เธ‚เธตเธขเธงเธซเธฅเธฐ เนƒเธซเน‰เธ•เธฒเธขเธชเธดเธ•เน‰เธญเธ‡เธกเธฒเธ™เธฑเนˆเธ‡เนเธเน‰เนเธšเธšเธ™เธตเน‰เนƒเธŠเนˆเน„เธซเธก

h1{
   color:green; เธชเธตเธญเธฑเธเธฉเธฃ
}p{
   color:green; เธชเธตเธญเธฑเธเธฉเธฃ
}div{
   width:100px; เธเธณเธซเธ™เธ”เธ‚เธ™เธฒเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เนเธชเธ”เธ‡เธœเธฅเธฅเธฑเธžเน€เธ›เน‡เธ™เธชเธตเนˆเน€เธซเธฅเธตเนˆเธขเธก
   height:100px;
   background-color:green; เธชเธตเธžเธทเน‰เธ™เธซเธฅเธฑเธ‡
}

เธ–เน‰เธฒเธ‡เธฒเธ™เน€เธฃเธฒเนƒเธซเธเนˆเธ‚เธถเน‰เธ™เน€เธฃเธฒ เธˆเธฐเน„เธกเนˆเธชเธฑเธšเธชเธ™เธ—เธตเนˆเธ•เน‰เธญเธ‡เน„เธ›เน„เธฅเนˆเน€เธ›เธฅเธตเนˆเธขเธ™ color เนเธ—เธšเธ—เธธเธ element เน€เธฅเธขเธซเธฃเธญ

เนเธฅเธฐเธฅเธญเธ‡เธ™เธถเธเธ”เธนเธงเนˆเธฒเธ–เน‰เธฒเธ„เธธเธ“เธกเธตเธชเธตเธ—เธตเนˆเธกเธฑเธ™เน„เธกเนˆเน„เธ”เน‰เธ•เธฃเธ‡เธ•เธฒเธกเธจเธฑเธžเธ—เนŒเธ—เธตเนˆเธกเธตเธกเธฒเนƒเธซเน‰เน€เธŠเนˆเธ™ red green blue เนเธ•เนˆเธชเธตเธ—เธตเนˆเธ„เธธเธ“เธเธณเธซเธ™เธ”เน€เธ›เน‡เธ™เธชเธตเนเธšเธšเธ—เธตเนˆเน€เธ›เน‡เธ™ rgb(217, 14, 235) เธญเธฐเน„เธฃเนเธšเธšเน€เธ™เธตเน‰เธข เนเธฅเน‰เธงเธ„เธธเธ“เธญเธขเธฒเธเนƒเธซเน‰เธชเธต element เธญเธฑเธ™เธ™เธตเน‰เธกเธฑเธ™เน€เธซเธกเธทเธญเธ™เธชเธต element เธ™เธฑเน‰เธ™ เธ„เธธเธ“เธ„เธ‡เธˆเธณเธ„เนˆเธฒเธชเธตเน„เธกเนˆเน„เธ”เน‰เธˆเธ™เธ„เธธเธ“เธ•เน‰เธญเธ‡ เน„เธฅเนˆเธซเธฒ element เธ™เธฑเนˆเธ™เนเธฅเน‰เธง copy rgb เธ‚เธญเธ‡ element เธกเธฒ เนƒเธชเนˆ element เธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰เธชเธตเน€เธซเธกเธทเธญเธ™เธเธฑเธ™

เธฅเธญเธ‡เนเธเน‰เน„เธ‚เธ”เน‰เธงเธข class ?

เน€เธญเน‰เนเธ•เนˆเธ–เน‰เธฒเธ„เธธเธ“เธˆเธฐเธšเธญเธเธงเนˆเธฒ เธเน‡เธชเธฃเธฒเน‰เธ‡ class เธญเธฐเน„เธฃเธชเธฑเธเธญเธขเนˆเธฒเธ‡เธชเธด เนเธฅเน‰เธง element เน„เธซเธ™เธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰เธกเธตเธชเธตเธ™เธตเน‰เธเน‡เนƒเธชเนˆ class เธ™เธตเน‰เน„เธ› เนเธšเธšเธ™เธตเน‰

.primary-color{
    rgb(217, 14, 235)
}

เธกเธฑเธ™เธเน‡เน„เธ”เน‰เธญเธขเธนเนˆเธ™เธฐ เนเธ•เนˆเน€เธ”เธตเน‹เธขเธงเน† เธ•เธฒเธกเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธ‚เน‰เธฒเธ‡เธ•เน‰เธ™เธœเธกเธกเธต element เธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰เน€เธ›เธฅเธตเนˆเธขเธ™เธชเธตเธžเธทเน‰เธ™เธซเธฅเธฑเธ‡เธญเธขเนˆเธฒเธ‡เน€เธ”เธตเธขเธงเธ”เน‰เธงเธขเธ™เธฐ เธ–เน‰เธฒเธ‡เธฑเน‰เธ™เธเน‡เธ•เน‰เธญเธ‡เน€เธžเธดเนˆเธกเธญเธตเธเธญเธฑเธ™เน„เธ›เนเธšเธšเธ™เธตเน‰เธ”เธด

.primary-bacground-color{
    rgb(217, 14, 235)
}

เน€เธงเธฅเธฒเนƒเธŠเน‰เธเน‡เนเธšเธšเธ™เธตเน‰

<h1  class="primary-color">this is header1<h1>
<p   class="primary-color">this is paragraph</p>
<div class="primary-ground-color">this is div</div>

เธ‹เธถเนˆเธ‡เธœเธฅเธฅเธฑเธžเธ˜เนŒเธเน‡เน€เธซเธกเธทเธญเธ™เธเธฑเธ™เน€เธ”เนˆเธฐ

เนเธ•เนˆเน€เธญเน‰เธฐ! เนเธšเธšเธ™เธตเน‰ เธ–เน‰เธฒเธ•เนˆเธญเน„เธ›เน€เธฃเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธกเธตเธซเธฅเธฒเธขเน†เธ„เนˆเธฒเนเธšเธšเธ—เธตเนˆเน„เธกเนˆเนƒเธŠเนˆเธชเธตเธซเธฅเธฐเน€เธŠเนˆเธ™เธ•เธฑเธงเน€เธฅเธ‚เนเธšเธšเน€เธ™เธตเน‰เธข เธกเธฑเธ™เธˆเธฐเน€เธฃเธดเนˆเธก เธ•เน‰เธญเธ‡เธชเธฃเธฒเน‰เธ‡ class เธกเธฒเน€เธขเธญเธฐเธกเธฒเธเธกเธฑเนˆเธงเธ‹เธฑเนˆเธงเน„เธ›เธซเธกเธ”


เนเธšเธšเนƒเธŠเน‰ Custom Properties

เธญเธ˜เธดเธšเธฒเธขเธ‚เน‰เธญเธกเธนเธฅเน€เธšเธทเน‰เธญเธ‡เธ•เน‰เธ™เน„เธ›เธ‚เน‰เธฒเธ‡เธšเธ™เธ™เธนเน‰เธ™เนเธฅเน‰เธงเธ™เธฐ

เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธเธฒเธฃเธ™เธณเน„เธ›เนƒเธŠเน‰

:root{
     --primary-color:rgb(217, 14, 235);
}h1{
   color:var(--primary-color); เธชเธตเธญเธฑเธเธฉเธฃ
}p{
   color:var(--primary-color); เธชเธตเธญเธฑเธเธฉเธฃ
}div{
   width:100px; เธเธณเธซเธ™เธ”เธ‚เธ™เธฒเธ”เน€เธžเธทเนˆเธญเนƒเธซเน‰เนเธชเธ”เธ‡เธœเธฅเธฅเธฑเธžเน€เธ›เน‡เธ™เธชเธตเนˆเน€เธซเธฅเธตเนˆเธขเธก
   height:100px;
   background-color:var(--primary-color); เธชเธตเธžเธทเน‰เธ™เธซเธฅเธฑเธ‡
}

เธœเธฅเธฅเธฑเธžเธ˜เนŒเธ—เธตเนˆเน„เธ”เน‰

เธ—เธตเธ™เธตเน‰เธซเธฒเธเน€เธฃเธฒเธญเธขเธฒเธเน€เธ›เธฅเธตเนˆเธขเธ™เธชเธต เธ—เธธเธเธชเธตเนƒเธซเน‰เน€เธ›เน‡เธ™เธชเธตเธญเธทเนˆเธ™เธเน‡เน„เธ›เน€เธ›เธฅเธตเนˆเธขเธ™เธ—เธตเนˆเธ•เธฃเธ‡ custom properties เน„เธ”เน‰เน€เธฅเธขเน€เธ”เธตเน‹เธขเธงเธ—เธตเนˆเน€เธซเธฅเธทเธญเธกเธฑเธ™เธเน‡เน€เธ›เธฅเธตเนˆเธขเธ™เธ•เธฒเธกเน€เธžเธฃเธฒเธฐเธกเธฑเธ™เนƒเธŠเน‰เธ„เนˆเธฒเธˆเธฒเธ custome properties

:root{
   --primary-color:rgb(217, 14, 235); เน€เธ›เธฅเธตเนˆเธขเธ™ value properties เธ™เธตเน‰เน„เธ”เน‰เน€เธฅเธข
}

เธ—เธณเนƒเธซเน‰ เธ—เธตเธ™เธตเน‰เธ‡เธฒเธ™เนƒเธซเธเนˆเธ‚เธถเน‰เธ™เน€เธฃเธฒเธเน‡เน„เธกเนˆเธ•เน‰เธญเธ‡เธกเธฒเธ™เธฑเนˆเธ‡เน„เธฅเนˆเธชเธฑเธš element เน„เธกเนˆเธงเธธเนˆเธ™เธงเธฒเธขเน„เธ›เธซเธกเธ” เธฎเนˆเธฒเน†

fallback

เธงเธดเธ˜เธตเนƒเธŠเน‰ var(properties,fallback)

เธ„เธทเธญเน€เธกเธทเนˆเธญcss properties เน„เธกเนˆเน€เธˆเธญ value เธˆเธฒเธ custom properties เน€เธˆเน‰เธฒ fallback เธˆเธฐเน€เธ‚เน‰เธฒเธกเธฒเน€เธ›เน‡เธ™ value เนเธ—เธ™

เน€เธŠเนˆเธ™ เน€เธกเธทเนˆเธญเน„เธกเนˆเน„เธ”เน‰เธ›เธฃเธฐเธเธฒเธจเธซเธฃเธทเธญเน€เธเธดเธ”เธญเธฐเน„เธฃเธชเธฑเธเธญเธขเนˆเธฒเธ‡เธ—เธตเนˆเธ—เธณเนƒเธซเน‰ value เธ‚เธญเธ‡ css custome property เธซเธฒเธขเน„เธ› เน‚เธ”เธขเธญเธฒเธˆเน€เธเธดเธ”เธˆเธฒเธ เธฅเธทเธกเธ›เธฃเธฐเธเธฒเธจ เธซเธฃเธทเธญเธฅเธšเธ—เธดเน‰เธ‡ เนเธ•เนˆเน‚เธ”เธขเธกเธฒเธเน€เธเธดเธ”เธˆเธฒเธเธเธฒเธฃเธ—เธตเนˆ browser เน„เธกเนˆ support value เธ™เธฑเน‰เธ™เน†เน€เธŠเนˆเธ™ เธ„เนˆเธฒ rbg() เธญเธฒเธˆเน„เธกเนˆเน„เธ”เน‰ support browser เธšเธฒเธ‡เน€เธงเธญเธฃเนŒเธŠเธฑเนˆเธ™ เธ—เธณเนƒเธซเน‰ brower เน„เธกเนˆเธฃเธนเน‰เธˆเธฑเธเธ„เนˆเธฒเธ™เธฑเน‰เธ™เนƒเธ™เธ—เธตเนˆเธชเธธเธ” custome properties เธ—เธตเนˆเธกเธต rgb เธญเธขเธนเนˆเธเน‡เธˆเธฐเน„เธกเนˆเธกเธตเธ„เนˆเธฒเธญเธตเธเธ•เนˆเธญเน„เธ›เน€เธฃเธฒเธˆเธถเธ‡เธ•เน‰เธญเธ‡เนƒเธŠเน‰ fallback

h1{
   color:var(--primary-color,red); เธชเธตเธญเธฑเธเธฉเธฃ
}

เธˆเธฒเธเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธ™เธฑเน‰เธ™เธซเธกเธฒเธขเธ„เธงเธฒเธกเธงเนˆเธฒ เน€เธกเธทเนˆเธญเน€เธเธดเธ”เธญเธฐเน„เธฃเธเน‡เธ•เธฒเธกเธ—เธตเนˆเน€เธฃเธฒเน„เธกเนˆเธชเธฒเธกเธฃเธ–เธฃเธฑเธšเธฃเธนเน‰เธ„เนˆเธฒเธ‚เธญเธ‡
–primary-color เน„เธ”เน‰ red เธˆเธฐเน€เธ‚เน‰เธฒเธกเธฒเน€เธ›เน‡เธ™ value เนเธ—เธ™เธ”เธฑเธ‡เธ™เธ™เธฑเน‰เธ™เธˆเธฐเธ—เธณเนƒเธซเน‰ h1 เธญเธญเธเธกเธฒเน€เธ›เน‡เธ™เธชเธตเนเธ”เธ‡

เธญเธฑเธ™เธ™เธตเน‰เน„เธกเนˆเนƒเธชเนˆเธœเธฅเธฅเธฑเธžเธ˜เนŒเธ™เธฐ เธฅเธญเธ‡เน„เธ›เน€เธ‚เธตเธขเธ™เน†เธเธถเธเนƒเธซเน‰เน€เธ‚เน‰เธฒเนƒเธˆเธ”เธนเธšเน‰เธฒเธ‡ 555 ?


เธชเธฃเธธเธ›

css custom properties เน€เธ›เน‡เธ™เน€เธซเธกเธทเธญเธ™ เธ•เธฑเธงเนเธ›เธฃเธ—เธตเนˆเน€เธฃเธฒเธ„เธญเธขเธเธณเธซเธ™เธ” เธกเธฒเธ•เธฃเธฒเธเธฒเธ™ เนƒเธซเน‰เธ„เนˆเธฒเธเธฑเธšเธกเธฑเธ™เนเธฅเน‰เธงเธเธฃเธฐเธˆเธฒเธขเน„เธ›เธชเธฒเธขเนƒเธซเน‰เธเธฑเธš properties เธ‚เธญเธ‡ element เธ•เนˆเธฒเธ‡เน†เนƒเธŠเน‰ เธ‹เธถเนˆเธ‡เธ—เธณเนƒเธซเน‰เธฅเธ”เธ„เธงเธฒเธกเธ‹เธฑเธšเธ‹เน‰เธญเธ™เนเธฅเธฐเธ—เธณเนƒเธซเน‰ code เธ”เธนเน€เธ›เน‡เธ™เธฃเธฐเธšเธšเธ•เธฒเธฒเธกเธฒเธ•เธฃเธเธฒเธ™เธ—เธตเนˆเธงเน‰เธฒเธ‡เน„เธงเน‰ เธ—เธฑเน‰เธ‡เธ™เธตเน‰เธญเธขเธฒเธเนƒเธซเน‰เธฅเธญเธ‡เธเธถเธเธ—เธณเธ”เน‰เธงเธขเธ™เธฐเธ„เธฃเธฑเธš เธ—เธณเธ„เธงเธฒเธกเน€เธ‚เน‰เธฒเนƒเธˆเนเธฅเธฐเธฅเธ‡เธกเธทเธญเธ—เธณเน€เธ›เน‡เธ™เธ‚เธญเธ‡เธ„เธนเนˆเธเธฑเธ™เธ„เธฃเธฑเธš เนเธฅเธฐเธเน‡เธ‚เธญเธ‚เธญเธšเธ„เธธเธ“เธ—เธตเนˆเธซเธฅเธ‡เน€เธ‚เน‰เธฒเธกเธฒเธญเนˆเธฒเธ™เธšเธ—เธ„เธงเธฒเธกเธ™เธตเน‰เธ„เธฃเธฑเธš