CSS Variables หรือ Custom Properties ช่วยให้จัดการค่าที่ใช้ซ้ำ เช่น สี ระยะห่าง และขนาด ได้ง่ายขึ้น ส่วน Cascade คือกฎที่ browser ใช้ตัดสินว่า style ใดจะถูกนำมาใช้เมื่อมีหลาย rule ชนกัน
นิยมประกาศตัวแปรระดับ global ใน :root
:root {
--color-primary: #3b82f6;
--color-text: #1f2937;
--space-md: 16px;
}
ชื่อตัวแปรต้องขึ้นต้นด้วย --
var().button {
background: var(--color-primary);
color: white;
padding: var(--space-md);
}
สามารถใส่ fallback ได้
.link {
color: var(--color-link, blue);
}
ถ้า --color-link ไม่มีค่า จะใช้ blue
ตัวอย่าง theme:
:root {
--bg: #ffffff;
--text: #111827;
}
[data-theme="dark"] {
--bg: #111827;
--text: #f9fafb;
}
body {
background: var(--bg);
color: var(--text);
}
Cascade คือกระบวนการที่ browser ตัดสินว่า CSS rule ใดจะชนะ โดยพิจารณาหลัก ๆ ดังนี้
!important หรือไม่บาง property ถ่ายทอดจาก parent ไป child ได้ เช่น
colorfont-familyfont-sizeline-heightบาง property ไม่ถ่ายทอด เช่น
marginborderpaddingwidthตัวอย่าง:
body {
color: #333;
font-family: sans-serif;
}
ข้อความภายใน body จะรับค่า color และ font-family ไปโดยอัตโนมัติ เว้นแต่มี rule อื่น override
!important!important ทำให้ declaration มีน้ำหนักสูงขึ้น
.button {
color: red !important;
}
ควรหลีกเลี่ยงการใช้บ่อย เพราะทำให้ debug และ override ยาก หากต้องใช้ควรใช้ในกรณีพิเศษ เช่น utility class ที่ตั้งใจ override หรือแก้ style จาก third-party ชั่วคราว
สร้าง theme light/dark ด้วย CSS Variables โดยกำหนดตัวแปร --bg, --text, --surface, --accent และสลับ theme ด้วย class หรือ data attribute
var() ใช้ทำอะไร!important