เผยแพร่: 1 กรกฎาคม 2025
ตั้งแต่ Chrome 137 เป็นต้นไป คุณสามารถลองใช้เงื่อนไขแบบอินไลน์ของ CSS ด้วยฟังก์ชัน if() ได้ if() ช่วยให้มีอินเทอร์เฟซนักพัฒนาแอปที่สะอาดขึ้นสำหรับสไตล์แบบไดนามิก เช่น การค้นหาสไตล์และ Media Query โดยมีความแตกต่างที่สำคัญบางอย่าง ซึ่งคุณสามารถดูได้ในโพสต์นี้
ฟังก์ชัน if() ของ CSS ทำงานโดยใช้ชุดคู่ค่าที่มีเงื่อนไข ซึ่งมีโครงสร้างดังนี้
property: if(condition-1: value-1; condition-2: value-2; condition-3: value-3);
คุณสามารถระบุข้อความ else ซึ่งจะใช้ในกรณีที่ไม่มีเงื่อนไขอื่นๆ ตรงตามเกณฑ์
property: if(condition-1: value-1; condition-2: value-2; condition-3: value-3; else: value-4);
ปัจจุบัน if() ทำงานร่วมกับคำค้นหา 3 ประเภท ได้แก่
style(): คำค้นหาสไตล์media(): Media Queriessupports(): รองรับคำค้นหา
มาดูตัวอย่างเพื่อทำความเข้าใจบริบทนี้กัน
การสาธิต: การค้นหาสื่อในบรรทัด
การใช้ if() เป็นวิธีที่ยอดเยี่ยมในการรวมการค้นหาสื่อในบรรทัดไว้ในสไตล์ เช่น คุณอาจตรวจสอบค่ากำหนดธีม (สว่างหรือมืด) ของผู้ใช้ หรือทำการค้นหาสื่อในบรรทัดสำหรับความกว้างของวิวพอร์ต ตัวอย่างต่อไปนี้แสดงการค้นหาสื่อสำหรับอุปกรณ์ชี้ตำแหน่ง ขนาดเริ่มต้นของปุ่มคือ 30 พิกเซลในอุปกรณ์ที่มีเคอร์เซอร์ละเอียด เช่น เมาส์ แต่สำหรับอุปกรณ์หน้าจอสัมผัส เช่น อุปกรณ์ที่มีเคอร์เซอร์หยาบ ขนาดของปุ่มจะเป็น 44 พิกเซลตามที่แนะนำขั้นต่ำเพื่อให้มีระยะห่างในการสัมผัสที่เหมาะสมเพื่อการเข้าถึงที่ง่ายขึ้น
button {
aspect-ratio: 1;
width: if(media(any-pointer: fine): 30px; else: 44px);
}
โค้ดก่อนหน้าให้ผลลัพธ์เหมือนกับ Media Query ต่อไปนี้
button {
aspect-ratio: 1;
width: 44px;
}
@media (any-pointer: fine) {
button {
width: 30px;
}
}
การใช้รูปแบบ if() ช่วยให้คุณมีตรรกะแบบอินไลน์ได้โดยไม่ต้องมีตรรกะการจัดรูปแบบใน 2 ที่ที่แตกต่างกัน
if() จะเพิ่มขนาดแบบอักษรของปุ่มในอุปกรณ์ที่มีเคอร์เซอร์ของหลักสูตรการสาธิต: คำขอรับการสนับสนุนในบรรทัด
อีกวิธีในการใช้ if() คือการสร้างคำค้นหาการสนับสนุนในบรรทัด เช่น หากต้องการตรวจสอบการรองรับสีแบบ Wide Gamut เช่น OKLCH คุณสามารถใช้
body {
background-color: if(
supports(color: oklch(0.7 0.185 232)): oklch(0.7 0.185 232);
else: #00adf3;
);
&::after {
content: if(
supports(color: oklch(0.7 0.185 232)): "Your browser supports OKLCH";
else: "Your browser does not support OKLCH";
);
}
}
เมื่อใช้โค้ดนี้ หากเบราว์เซอร์รองรับขอบเขตสี oklch ผู้ใช้จะเห็นสีที่สดใสยิ่งขึ้น และจะได้รับข้อความ "เบราว์เซอร์ของคุณรองรับ OKLCH" ในเนื้อหาเสมือน ::after ด้วย
if()ดูข้อมูลเพิ่มเติมและดูความแตกต่างระหว่าง RGB กับขอบเขตสีขั้นสูงอื่นๆ ได้ที่ตัวเลือกสีและแหล่งข้อมูลที่ oklch.com
การสาธิต: การแสดงภาพสถานะ UI
นอกจากนี้ คุณยังใช้ if() สำหรับการจัดรูปแบบตามสถานะได้ด้วย เช่น การจัดรูปแบบการ์ดความคืบหน้าตามสถานะ UI (รอดำเนินการหรือเสร็จสมบูรณ์) จัดเก็บสถานะในแอตทริบิวต์ข้อมูลหรือคุณสมบัติที่กำหนดเองโดยตรง แล้วใช้รูปแบบในพร็อพเพอร์ตี้โดยใช้ if()
<div class="card" data-status="complete">
...
</div>
.card {
--status: attr(data-status type(<custom-ident>));
border-color: if(
style(--status: pending): royalblue;
style(--status: complete): seagreen;
else: gray);
background-color: if(
style(--status: pending): #eff7fa;
style(--status: complete): #f6fff6;
else: #f7f7f7);
}
if()เมื่อใช้ style() ภายในฟังก์ชัน if() คุณจะจัดรูปแบบองค์ประกอบที่กำหนดเป้าหมายได้โดยตรง โดยไม่ต้องใช้องค์ประกอบหลักเหมือนที่การค้นหาสไตล์ CSS กำหนด
การสาธิตนี้แสดงกรณีพื้นฐานของวิธีใช้ if() เพื่อรองรับแนวทางสถาปัตยกรรมใหม่สำหรับ CSS ข้อดีอย่างหนึ่งของการใช้คุณสมบัติที่กำหนดเองของ CSS แทนคลาสคือการอัปเดตใน CSS ได้ง่าย เช่น อาจอัปเดตโดยใช้การค้นหาสื่อหรือสถานะจำลอง เช่น :hover
ขั้นตอนถัดไป
การเพิ่ม if() เป็นโอกาสใหม่ด้านสถาปัตยกรรมสำหรับนักพัฒนา CSS เมื่อเทคโนโลยีอย่างการค้นหาสไตล์พัฒนาขึ้น การค้นหาช่วงน่าจะทำได้ภายในif()ฟังก์ชัน และยังจะมีประโยชน์เมื่อใช้ร่วมกับข้อเสนอฟังก์ชันที่กำหนดเองที่กำลังจะมาถึง (CSS @function)
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์เหล่านี้ได้ที่