การอัปเกรด attr() ของ CSS

เผยแพร่: 15 ม.ค. 2025

ฟังก์ชัน attr() ที่ออกแบบใหม่

เมื่อใช้ CSS attr() คุณจะใช้ค่าของแอตทริบิวต์ HTML ใน CSS ได้ ก่อนหน้านี้ attr() ใช้งานได้เฉพาะในพร็อพเพอร์ตี้ content ขององค์ประกอบจำลอง และสามารถแยกวิเคราะห์ค่าเป็น <string> ของ CSS เท่านั้น

ฟังก์ชัน attr() ที่ออกแบบใหม่ซึ่งพร้อมใช้งานใน Chrome 133 จะปลดล็อกความสามารถเพิ่มเติม ตอนนี้คุณใช้ attr() กับพร็อพเพอร์ตี้ CSS ใดก็ได้ รวมถึงพร็อพเพอร์ตี้ที่กำหนดเอง และสามารถแยกวิเคราะห์ค่าเป็นประเภทข้อมูลอื่นนอกเหนือจาก <string>

ตัวอย่าง

ในตัวอย่างต่อไปนี้ ค่าของพร็อพเพอร์ตี้ color สำหรับ div ใช้ค่าจากแอตทริบิวต์ data-color ระบบจะแยกวิเคราะห์ค่าแอตทริบิวต์นี้เป็น <color> โดยใช้ attr() และ type() ค่าสำรองจะตั้งค่าเป็น red

<div data-foo="blue">test</div>
div {
  color: attr(data-foo type(<color>), red);
}

ในตัวอย่างถัดไป พร็อพเพอร์ตี้ view-transition-name จะกำหนดโดยแอตทริบิวต์ id ขององค์ประกอบ ระบบจะแยกวิเคราะห์แอตทริบิวต์เป็น <custom-ident> ซึ่งเป็นประเภทที่จำเป็นสำหรับ view-transition-name หากไม่มี attr() คุณจะต้องประกาศ view-transition-name สำหรับแต่ละการ์ด แต่ตอนนี้คุณประกาศพร้อมกันได้

<div class="cards">
  <div class="card" id="card-1"></div>
  <div class="card" id="card-2"></div>
  <div class="card" id="card-3"></div>
  <div class="card" id="card-4"></div>
</div>
.card {
  view-transition-name: attr(id type(<custom-ident>), none); /* card-1, card-2, card-3, etc. */
  view-transition-class: card;
}

นอกจากนี้ คุณยังแยกวิเคราะห์ค่าเป็นความยาวได้โดยการตั้งค่าประเภทเป็นตัวระบุที่ตรงกับหน่วยมิติข้อมูล CSS หรืออักขระ % ในตัวอย่างต่อไปนี้ ระบบจะแยกวิเคราะห์แอตทริบิวต์ data-size เป็นค่าพิกเซล

<div data-size="10">test</div>
div {
  font-size: attr(data-size px);
}

เมื่อใช้ attr() โดยไม่ระบุประเภท ระบบจะแยกวิเคราะห์แอตทริบิวต์เป็นสตริง CSS ซึ่งเหมือนกับลักษณะการทำงานก่อนหน้านี้

ดูข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับ attr() ในข้อกำหนดและใน MDN