เผยแพร่: 1 กรกฎาคม 2026
ในงาน Google I/O 2026 เราได้แชร์ข้อมูลอัปเดตมากมายที่กำลังจะเปิดตัวในแพลตฟอร์ม Web UI ตั้งแต่การเคารพค่ากำหนดของผู้ใช้ไปจนถึงการใช้การโต้ตอบที่เป็นธรรมชาติ การแนะนำการนำทาง การลดความซับซ้อน และการปรับให้เข้ากับรูปแบบต่างๆ เว็บสมัยใหม่มีเครื่องมือที่ทรงพลังอย่างยิ่งสำหรับนักพัฒนาแอปในการสร้างประสบการณ์ของผู้ใช้คุณภาพสูงที่จับต้องได้
ต่อไปนี้คือสรุปฟีเจอร์ทั้งหมดที่กล่าวถึงในเซสชัน "มีอะไรใหม่ใน UI เว็บ" ซึ่งจัดโครงสร้างตามชุดหลักการ UX หลักของเรา
ส่วนที่ 1: เคารพค่ากำหนดของผู้ใช้
การปรับเปลี่ยนในแบบของคุณเป็นพื้นฐานของความสามารถในการใช้งานเว็บ Web API สมัยใหม่ช่วยให้ปรับตัวเลือกในระดับระบบของผู้ใช้ได้ง่ายขึ้นโดยอัตโนมัติ แม้ว่าแนวคิดเหล่านี้จะดูเหมือนเป็นพื้นฐานและเราได้พูดถึงแนวคิดเหล่านี้มาหลายปีแล้ว แต่จริงๆ แล้วมี API และรูปแบบใหม่ๆ อยู่ 2-3 รายการที่ช่วยให้การสร้างการปรับเปลี่ยนในแบบของคุณแบบไดนามิกนี้ง่ายขึ้น
1. contrast-color()
ฟังก์ชัน CSS contrast-color() จะรับสีอินพุตและส่งคืน black หรือ white โดยอัตโนมัติ ทั้งนี้ขึ้นอยู่กับสีที่มีคอนทราสต์สูงกว่าเมื่อเทียบกับสีอินพุตตามอัลกอริทึมคอนทราสต์ขั้นต่ำของ WCAG AA วิธีนี้ช่วยให้มั่นใจได้ว่าข้อความจะอ่านง่ายโดยไม่ต้องดูแลคู่สีข้อความกับพื้นหลังด้วยตนเอง
ดูข้อมูลเพิ่มเติมเกี่ยวกับ contrast-color()
2. light-dark()
ฟังก์ชัน CSS light-dark() ช่วยให้คุณระบุค่าที่แตกต่างกัน 2 ค่า (สีหรือรูปภาพ) สำหรับพร็อพเพอร์ตี้ได้ โดยค่าหนึ่งสำหรับโหมดสว่างและอีกค่าหนึ่งสำหรับโหมดมืดภายในประกาศเดียว เบราว์เซอร์จะเลือกสีที่มีคอนทราสต์ที่ถูกต้องโดยอัตโนมัติตามcolor-schemeที่ใช้งานอยู่ (ซึ่งต้องตั้งค่าเป็น light, dark หรือ light dark ใน :root หรือองค์ประกอบระดับบน)
สิ่งใหม่ใน light-dark() คือการที่ไม่ได้จำกัดอยู่แค่ค่าสีอีกต่อไป ตั้งแต่ Chrome 150 เป็นต้นไป ตอนนี้พร็อพเพอร์ตี้นี้ยังยอมรับค่ารูปภาพ 2 ค่าด้วย
Browser Support
3. ฟังก์ชันที่กำหนดเองของ CSS (@function)
กฎ @ @function ช่วยให้คุณกำหนดฟังก์ชันที่กำหนดเองและนำกลับมาใช้ใหม่ได้โดยตรงภายใน CSS ดั้งเดิม โดยสามารถรับพร็อพเพอร์ตี้ที่กำหนดเองซึ่งกำหนดขอบเขตไว้ในเครื่องเป็นอาร์กิวเมนต์ ทำการคำนวณ และแสดงผลค่าโดยใช้ตัวอธิบาย result ซึ่งช่วยลดความจำเป็นในการใช้ตัวประมวลผลล่วงหน้า
เมื่อใช้ร่วมกับการค้นหาสไตล์คอนเทนเนอร์และฟังก์ชัน if() CSS คุณจะสร้างฟังก์ชัน --light-dark() ที่กำหนดเองซึ่งใช้ได้กับค่าทุกประเภท ดังที่แสดงในเดโมนี้
4. การค้นหาสไตล์คอนเทนเนอร์
การค้นหาสไตล์ซึ่งเป็นส่วนหนึ่งของการค้นหาคอนเทนเนอร์ CSS ช่วยให้นักพัฒนาแอปใช้สไตล์กับองค์ประกอบสืบทอดได้โดยอิงตามค่าคุณสมบัติที่กำหนดเองที่คำนวณแล้วของคอนเทนเนอร์หลัก ซึ่งช่วยให้ใช้คอมโพเนนต์แบบไดนามิกได้โดยไม่ต้องระบุการล้อมองค์ประกอบขนาดอย่างชัดเจน
Browser Support
ในการสาธิตนี้ ระบบจะใช้การค้นหารูปแบบเพื่อตั้งค่าสีตาม--themeคุณสมบัติที่กำหนดเอง
@container style(--theme: primary) {
.app-card {
--bg-light: #fdf2f8;
--bg-dark: #ff91d3;
--neon-glow: #f472b6;
--btn-light: #be185d;
--btn-dark: #fbcfe8;
--text-on-light: #500732;
--text-on-dark: #fff1f2;
}
}
@container style(--theme: accent) {
.app-card {
--bg-light: #f3e8ff;
--bg-dark: #4c1d95;
--neon-glow: #d8b4fe;
--btn-light: #7e22ce;
--btn-dark: #c084fc;
--text-on-light: #2e1065;
--text-on-dark: #faf5ff;
}
}
@container style(--theme: success) {
/* … */
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับการค้นหาสไตล์
5. ฟังก์ชัน if() ของ CSS
ฟังก์ชัน CSS if() จะนำตรรกะแบบมีเงื่อนไขในบรรทัดมาใช้กับค่าพร็อพเพอร์ตี้ CSS โดยตรง โดยจะประเมินชุดเงื่อนไขที่คั่นด้วยเครื่องหมายอัฒภาค (การค้นหาสไตล์, การค้นหาสื่อ หรือการค้นหาฟีเจอร์) และให้คุณตั้งค่าต่างๆ ที่เชื่อมโยงกับเงื่อนไขแรกที่เป็นจริง โดยมีelseการสำรองข้อมูลที่ไม่บังคับ
ในการสาธิตก่อนหน้านี้ มีการใช้ฟังก์ชัน if() เพื่อสร้างสีคอนทราสต์ที่มีธีมตามเอาต์พุตของฟังก์ชัน contrast-color()
--contrast-color: contrast-color(var(--card-bg));
color: if(
style(--contrast-color: white): var(--text-on-dark);
else: var(--text-on-light)
);
6. @supports at-rule()
ฟังก์ชัน at-rule() ของ CSS สำหรับใช้กับ @supports ช่วยให้นักพัฒนาซอฟต์แวร์ตรวจหาฟีเจอร์ได้ว่าเบราว์เซอร์รู้จักกฎ @ ที่เฉพาะเจาะจงหรือไม่ เช่น @starting-style หรือ @view-transition
เช่น หากต้องการตรวจสอบว่า @function รองรับหรือไม่ ให้ใช้ดังนี้
@supports at-rule(@function) {
/* Code for browsers that support @function goes here */
}
การใช้ at-rule() จะอนุญาตให้ตรวจสอบการรองรับพื้นฐานของกฎที่ขึ้นต้นด้วย @ เท่านั้น และใช้เพื่อทดสอบตัวอธิบาย คำนำ หรือบล็อกกฎที่ขึ้นต้นด้วย @ แบบเต็มไม่ได้ มีวิธีแก้ปัญหาเฉพาะหน้าสำหรับตรวจหาฟีเจอร์ต่างๆ เช่น คำค้นหาที่ยึดตำแหน่งหรือคำค้นหาตามสไตล์
ดูข้อมูลเพิ่มเติมเกี่ยวกับ @supports at-rule
7. <meta name="text-scale">
แท็กเมตา HTML text-scale จะเลือกให้หน้าเว็บมีขนาดแบบอักษรเริ่มต้นขององค์ประกอบรูท <html> ตามสัดส่วนของการตั้งค่าขนาดข้อความระดับระบบปฏิบัติการและเบราว์เซอร์ ซึ่งมีความสําคัญอย่างยิ่งสําหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่
เมื่อใช้แล้ว ระบบปฏิบัติการจะเป็นตัวกำหนดขนาดแบบอักษรในองค์ประกอบ html คุณจึงไม่จำเป็นต้องตั้งค่า font-size ฐาน หากคุณใช้ความยาวที่มีหน่วยสัมพัทธ์ เช่น em และ rem ค่าพิกเซลที่คำนวณแล้วจะอิงตามขนาดแบบอักษรฐานนั้น
<meta name="text=scale" value="scale">
<style>
html {
/* Don't set a base font-size here! */
}
</style>
จากแท็บการแสดงผลในเครื่องมือสำหรับนักพัฒนาเว็บ คุณสามารถจำลองขนาดแบบอักษรที่ต้องการได้ ใช้เมนูแบบเลื่อนลงเพื่อเปลี่ยนค่า
ดูข้อมูลเพิ่มเติมเกี่ยวกับ <meta name=text-scale>
ส่วนที่ 2: ใช้การโต้ตอบที่เป็นธรรมชาติ
การเคลื่อนไหวทางกายภาพที่ใช้งานง่ายและท่าทางที่เป็นธรรมชาติเป็นกุญแจสำคัญในการทำให้ประสบการณ์บนเว็บรู้สึกเหมือนแอปพลิเคชันเนทีฟ และ CSS สมัยใหม่ช่วยให้คุณทำสิ่งนี้ได้ง่ายขึ้น
8. linear() ฟังก์ชันการค่อยๆ เปลี่ยน
ฟังก์ชันการลดความเร็ว linear() ช่วยให้คุณสร้างเส้นโค้งการเปลี่ยนภาพที่ซับซ้อนและกำหนดเอง (เช่น การดีด การสปริง หรือการยืดเกินแบบยืดหยุ่น) ได้โดยการประมาณค่าเชิงเส้นระหว่างจุดความคืบหน้าที่ระบุจำนวนไม่จำกัด
ในวิดีโอสาธิตต่อไปนี้ เราใช้ linear() เพื่อให้กล่องโต้ตอบมีการค่อยๆ เปลี่ยนที่ราบรื่นเมื่อแสดงหรือซ่อน
ดูข้อมูลเพิ่มเติมเกี่ยวกับ linear()
9. @starting-style
กฎ @ ของ CSS @starting-style จะกำหนดค่าเริ่มต้นสำหรับพร็อพเพอร์ตี้ในองค์ประกอบที่คุณต้องการเปลี่ยนจากเมื่อมีการแสดงผลองค์ประกอบใน DOM เป็นครั้งแรก หรือเมื่อ display เปลี่ยนจาก none เป็นค่าที่มองเห็นได้ เพื่อให้การเปลี่ยนผ่านตอนเริ่มต้นเป็นไปอย่างราบรื่น
ในการสาธิตก่อนหน้านี้ เราใช้เพื่อสร้างภาพเคลื่อนไหวเข้าของ <dialog> เมื่อมองเห็นเป็นครั้งแรก
10. transition-behavior: allow-discrete
พร็อพเพอร์ตี้ transition-behavior (มักใช้เป็น allow-discrete ในรูปแบบย่อ transition) ช่วยให้คุณเปลี่ยนพร็อพเพอร์ตี้ที่ไม่ต่อเนื่อง เช่น display หรือ overlay เพื่อให้มั่นใจว่าองค์ประกอบจะยังคงมองเห็นได้ในระหว่างภาพเคลื่อนไหวขาออกก่อนที่จะซ่อน
11. sibling-index() และ sibling-count()
ฟังก์ชัน CSS sibling-index() และ sibling-count() จะแสดงผลจำนวนเต็มที่แสดงตำแหน่งขององค์ประกอบโดยอิงตาม 1 ในกลุ่มองค์ประกอบที่อยู่ระดับเดียวกัน และจำนวนองค์ประกอบที่อยู่ระดับเดียวกันทั้งหมดตามลำดับ ซึ่งเหมาะอย่างยิ่งสำหรับการคำนวณการหน่วงเวลาของภาพเคลื่อนไหวแบบเหลื่อมกันแบบไดนามิกใน CSS โดยไม่ต้องใช้ JavaScript
ในเดโมนี้ เนื้อหาของกล่องโต้ตอบจะเหลื่อมกันโดยใช้ sibling-index() ใน animation-delay
dialog[open] > * {
animation:
content-entry 0.6s var(--spring) forwards;
/* 0.2s delay for the first item, then staggering by 0.05s via sibling-index()
*/
animation-delay:
calc(sibling-index() * 0.05s + 0.2s);
}
12. ปิดกล่องโต้ตอบ (แอตทริบิวต์ closedby)
แอตทริบิวต์ closedby ในองค์ประกอบ <dialog> (ที่มีค่า any) ช่วยให้คุณใช้ลักษณะการทำงานแบบประกาศ "ปิดอย่างรวดเร็ว" ซึ่งจะปิดกล่องโต้ตอบแบบโมดอลโดยอัตโนมัติเมื่อคลิกภายนอกกล่องหรือกด ESC โดยไม่ต้องใช้ JavaScript ที่กำหนดเอง
คุณลองใช้ได้ในเดโมก่อนหน้า
13. corner-shape
พร็อพเพอร์ตี้แบบย่อ corner-shape ในเวอร์ชันทดลองช่วยให้นักพัฒนาซอฟต์แวร์แก้ไขมุมโค้ง (จาก border-radius) เพื่อสร้างรูปร่างภาพที่กำหนดเอง เช่น bevel, scoop, notch หรือ squircle (ผ่าน superellipse()) ได้ เส้นขอบ เงา และเส้นขอบโฟกัสจะปรับให้เข้ากับรูปร่างโดยอัตโนมัติ
ส่วนที่ 3: จัดการนำทางแบบมีคำแนะนำ
การนำทางเส้นทางของผู้ใช้ช่วยรักษาบริบทและทําความเข้าใจโฟลว์ของแอปพลิเคชัน ซึ่งจะช่วยลดการโหลดซ้ำที่ทำให้สับสน คุณสามารถทำได้หลายวิธี รวมถึงการเปลี่ยนมุมมองซึ่งได้รับการอัปเดตล่าสุด
14. การเปลี่ยนมุมมองเอกสารเดียวกัน
การเปลี่ยนผ่านในเอกสารเดียวกันซึ่งเป็นส่วนหนึ่งของ View Transition API จะมีกลไกในการเคลื่อนไหวระหว่างสถานะ DOM ในแอปพลิเคชันหน้าเว็บเดียว (SPA) โดยการจับภาพสแนปชอตและเปลี่ยนผ่านโดยใช้ CSS
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนมุมมองเอกสารเดียวกัน
15. การเปลี่ยนมุมมองระหว่างเอกสาร
ขยาย View Transition API ไปยังแอปพลิเคชันแบบหลายหน้า (MPA) ซึ่งช่วยให้คุณสร้างการเปลี่ยนภาพแบบเคลื่อนไหวที่ราบรื่นเมื่อไปยังส่วนต่างๆ ระหว่างเอกสารต่างๆ โดยการจับคู่องค์ประกอบที่มี view-transition-name เดียวกันในหน้าต่างๆ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนมุมมองข้ามเอกสาร
16. การเปลี่ยนภาพมุมมองที่กำหนดขอบเขตขององค์ประกอบ
การเปลี่ยนภาพมุมมองที่กำหนดขอบเขตขององค์ประกอบซึ่งเปิดตัวใน Chrome 147 ช่วยให้คุณเรียกใช้การเปลี่ยนภาพมุมมองได้เฉพาะใน DOM subtree ที่เฉพาะเจาะจง (โดยใช้ element.startViewTransition()) ในขณะที่ส่วนอื่นๆ ของหน้ายังคงใช้งานได้และโต้ตอบได้
Browser Support
เมื่อเริ่มการเปลี่ยนฉากมุมมองที่กำหนดขอบเขตองค์ประกอบ การเปลี่ยนฉากจะทำงานแยกกัน โดยจะสแกนเฉพาะซับทรีนั้นเพื่อหาองค์ประกอบที่มี view-transition-name และจะแทรกเพชรโด::view-transitionลงในรูทของขอบเขตเอง การแยกนี้เป็นไปได้เนื่องจากการใช้ view-transition-scope: all โดยอัตโนมัติ
ซึ่งจะช่วยให้การเปลี่ยนฉากของมุมมองหลายรายการทำงานพร้อมกันได้ รวมถึงการซ้อนการเปลี่ยนฉากของมุมมองด้วย ขณะที่ระบบสับเปลี่ยนรายการในลิสต์เหล่านี้ คุณก็สลับลิสต์เองได้เช่นกัน
นอกจากนี้ ระบบจะซ้อนกลุ่มย่อยเสมือนโดยอัตโนมัติ และจะตัดส่วนที่เกินของกลุ่มย่อยเสมือนที่ล้อมรอบเมื่อจำเป็น
การเปลี่ยนมุมมองที่กำหนดขอบเขตเหมาะอย่างยิ่งสำหรับการโต้ตอบขนาดเล็กและการเปลี่ยนรูปร่างแบบมีสถานะในหน้าเว็บ ซึ่งจะช่วยให้ผู้ใช้มีบริบทมากขึ้นเมื่อมีการเปลี่ยนแปลงภาพ ซึ่งเป็นวิธีที่ยอดเยี่ยมในการปรับปรุงความสามารถในการใช้งานแอปพลิเคชันของคุณ พร้อมทั้งยกระดับรูปลักษณ์และความรู้สึกในการใช้งาน สิ่งเล็กๆ เหล่านี้สร้างความแตกต่างได้มาก
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนมุมมองที่กำหนดขอบเขตขององค์ประกอบ
17. การเปลี่ยนฉาก 2 เฟส
ฟีเจอร์นี้เป็นฟีเจอร์ทดลองที่จะเริ่มการเปลี่ยนภาพมุมมองแบบข้ามเอกสารทันทีโดยไม่ต้องรอให้ DOM ใหม่พร้อม โดยจะเปลี่ยนภาพเป็นหน้าจอโครงร่างชั่วคราวหรือ UI การโหลดก่อน จากนั้นจึงดำเนินการเปลี่ยนภาพมุมมองแบบข้ามเอกสารต่อ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนมุมมองแบบ 2 เฟส
18. ภาพเคลื่อนไหวที่ขับเคลื่อนด้วยการเลื่อน
ภาพเคลื่อนไหวที่ขับเคลื่อนด้วยการเลื่อนจะลิงก์ความคืบหน้าของภาพเคลื่อนไหว CSS กับตำแหน่งการเลื่อนของคอนเทนเนอร์ที่เลื่อนได้โดยตรง ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์สร้างอินเทอร์เฟซที่อิงตามการเลื่อนได้ เช่น เอฟเฟกต์ภาพซ้อนที่ทำงานได้อย่างมีประสิทธิภาพและตัวบ่งชี้การเลื่อน
- ดูข้อมูลเพิ่มเติมเกี่ยวกับภาพเคลื่อนไหวที่ขับเคลื่อนด้วยการเลื่อน
- ดูเดโมภาพเคลื่อนไหวที่ขับเคลื่อนด้วยการเลื่อนหลายรายการ
- เรียนรู้ภาพเคลื่อนไหวที่ขับเคลื่อนด้วยการเลื่อนด้วยหลักสูตรวิดีโอฟรี 10 ตอนนี้
19. ภาพเคลื่อนไหวที่ทริกเกอร์เมื่อเลื่อน
ฟีเจอร์ใหม่ใน Chrome คือภาพเคลื่อนไหวที่ทริกเกอร์เมื่อเลื่อน ภาพเคลื่อนไหวที่ทริกเกอร์ด้วยการเลื่อนจะทริกเกอร์ภาพเคลื่อนไหว CSS มาตรฐานตามเวลาเมื่อข้ามขอบเขตการเลื่อน (ใช้ timeline-trigger เพื่อกำหนดทริกเกอร์และ animation-trigger เพื่อเล่น) ซึ่งเป็นทางเลือกแบบประกาศสำหรับ IntersectionObserver
Browser Support
กลไกพื้นฐานสำหรับภาพเคลื่อนไหวที่ทริกเกอร์โดยการเลื่อนคือทริกเกอร์ไทม์ไลน์ซึ่งอาจใช้งานอยู่หรือไม่ใช้งานอยู่
.element {
timeline-trigger:
--t
view()
contain 25% contain 75% / entry 105% exit -5%
;
}
เปิดเครื่องมือแสดงภาพในเดโมต่อไปนี้เพื่อดูสิ่งที่เกิดขึ้น ช่วงแรกคือช่วงการเปิดใช้งานและกำหนดเวลาที่ทริกเกอร์จะทำงาน ช่วงที่ 2 คือช่วงที่ใช้งานอยู่ ซึ่งกำหนดระยะเวลาที่ควรใช้งาน
ดูข้อมูลเพิ่มเติมเกี่ยวกับภาพเคลื่อนไหวที่ทริกเกอร์ด้วยการเลื่อน
20. scroll-target-group: auto
ตอนนี้คุณสามารถสร้าง Scroll-Spy ของ CSS แบบเนทีฟซึ่งจะไฮไลต์ลิงก์นำทางโดยอัตโนมัติตามตำแหน่งการเลื่อนของผู้ใช้ได้แล้ว การตั้งค่า scroll-target-group: auto ในรายการการนำทางจะทำให้เบราว์เซอร์ตั้งค่า aria-current="true" โดยอัตโนมัติและใช้เพสโด้คลาส :target-current กับลิงก์ที่ใช้งานอยู่ จากนั้นจะใช้ :target-current เพื่อจัดรูปแบบลิงก์ที่ใช้งานอยู่เพิ่มเติมได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับ CSS Scroll-Spy ด้วย scroll-target-group
21. ตัวเลือกคอนเทนเนอร์ scrollIntoView()
วิธีการ scrollIntoView() จะมีcontainer ตัวเลือก การตั้งค่า target.scrollIntoView({container: 'nearest'}) จะจำกัดการเลื่อนไว้ที่ตัวเลื่อนระดับบนสุดที่ใกล้ที่สุดแทนที่จะให้เลื่อนขึ้นไปจนสุด ซึ่งจะป้องกันการเลื่อนระดับหน้าเว็บที่ทำให้สับสน
ใช้ช่องทําเครื่องหมายในเดโมนี้เพื่อเปิดและปิดตัวเลือก
ดูข้อมูลเพิ่มเติมเกี่ยวกับ container: "nearest"
22. การเลื่อนแบบเป็นโปรแกรมที่รอได้
ตอนนี้วิธีการเลื่อนแบบเป็นโปรแกรมทั้งหมด (เช่น scroll(), scrollTo() และ scrollIntoView()) จะแสดงผล Promise ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์awaitการสิ้นสุดของภาพเคลื่อนไหวการเลื่อนอย่างราบรื่นก่อนที่จะเรียกใช้ตรรกะที่ตามมา (เช่น การเพิ่มเอฟเฟกต์ไฮไลต์)
ในวิดีโอเดโมต่อไปนี้ คุณจะเห็นการทำงานของฟีเจอร์นี้ โดยระบบจะเลื่อนองค์ประกอบให้ปรากฏในมุมมองก่อน จากนั้นจึงเพิ่มเอฟเฟกต์ไฮไลต์ลงในองค์ประกอบ
ส่วนที่ 4: เพิ่มเนื้อหา ลดสัญญาณรบกวน
ประสบการณ์การใช้งานเว็บที่น่าหงุดหงิดที่สุดอย่างหนึ่งคือการคาดหวังว่าจะได้เห็นเนื้อหา แต่กลับถูกบล็อกด้วยป๊อปอัปหรือแบนเนอร์ที่รบกวน จัดลำดับความสำคัญของพื้นที่เนื้อหาโดยกำจัดความรกของภาพและเส้นขอบของแอปพลิเคชัน ย้ายการดำเนินการรองไปไว้ด้านหลัง UI แบบเลเยอร์
23. การค้นหาตามสถานะการเลื่อน (scrolled)
scroll-state Queries ซึ่งเป็นส่วนหนึ่งของ Container Queries ของ CSS ช่วยให้คุณจัดรูปแบบองค์ประกอบย่อยตามสถานะการเลื่อนของคอนเทนเนอร์ (ที่มี container-type: scroll-state) ได้ ส่วน scrolled Query (เช่น scroll-state(scrolled: bottom)) จะตรวจหาทิศทางการเลื่อนที่สัมพันธ์กันล่าสุด ซึ่งช่วยให้ใช้รูปแบบต่างๆ เช่น "แถบเลื่อนที่ซ่อนอยู่" ได้
Browser Support
ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ "Hidey Bar"
24. การค้นหาคอนเทนเนอร์ที่ยึด
การวางตำแหน่งยึด CSS มีการค้นหาคอนเทนเนอร์ที่ยึด ซึ่งช่วยให้คุณตรวจสอบได้ว่าตำแหน่งสำรอง (เช่น fallback: bottom หรือ fallback: flip-block) ใดที่ใช้งานอยู่ในองค์ประกอบที่วางตำแหน่งยึดอยู่ในขณะนี้ ซึ่งจะช่วยให้สามารถอัปเดตแบบไดนามิกเพื่อจัดรูปแบบองค์ประกอบที่วางตำแหน่งยึด (เช่น ลูกศรของเคล็ดลับเครื่องมือ)
Browser Support
ในการสาธิตต่อไปนี้ ป๊อปโอเวอร์ที่วางตำแหน่งไว้ในจุดยึดจะเปลี่ยนตำแหน่งของตัวเองตามตำแหน่งสำรองและตำแหน่งในวิวพอร์ตโดยใช้การค้นหาคอนเทนเนอร์ที่ยึด เมื่อเคล็ดลับเครื่องมือเปิดขึ้นเหนือตัวเรียกใช้ เคล็ดลับเครื่องมือจะเคลื่อนไหวจากด้านล่างขึ้นด้านบนจากแหล่งที่มา เมื่ออยู่ใต้ตัวเรียกใช้ ระบบจะเคลื่อนไหวจากบนลงล่าง
25. CSS border-shape
พร็อพเพอร์ตี้ border-shape ช่วยให้คุณกำหนดเส้นขอบที่ไม่ใช่สี่เหลี่ยมได้โดยใช้ไวยากรณ์รูปร่างเดียวกันกับ clip-path border-shapeจะรักษาเส้นขอบ เส้นกรอบ และเงาให้สอดคล้องกับรูปร่างที่กำหนดเองในเชิงภาพ ซึ่งต่างจากการตัด นอกจากนี้ยังมีความสามารถที่เหนือกว่า corner-shape เนื่องจาก border-shape มีความยืดหยุ่นมากกว่า
Browser Support
26. ฟังก์ชัน shape() ของ CSS
ฟังก์ชัน shape() ของ CSS ช่วยให้คุณกำหนดเส้นทางเรขาคณิตที่ซับซ้อนใน CSS แบบอินไลน์ได้ โดยใช้ร่วมกับพร็อพเพอร์ตี้ เช่น clip-path, border-shape หรือ shape-outside เพื่อสร้างรูปร่างที่ไม่ใช่สี่เหลี่ยมผืนผ้าซึ่งเนื้อหาสามารถลอยอยู่ได้
27. การวางตำแหน่งแบบติดหนึบต่อแกน
การเปลี่ยนแปลงข้อกำหนดการล้นล่าสุดที่อนุญาตให้คอนเทนเนอร์เป็นตัวเลื่อนสำหรับแกนเดียวเท่านั้น ทำให้ตอนนี้การวางตำแหน่งแบบ Sticky สามารถติดตามคอนเทนเนอร์ที่เลื่อนได้ 2 รายการที่แตกต่างกัน (รายการละ 1 แกน) พร้อมกัน ซึ่งจะทำให้คอลัมน์แรกและแถวบนสุดแบบตรึงในตารางทำงานได้ตามที่คาดไว้แม้จะอยู่ในคอนเทนเนอร์เลื่อนแกนเดียวก็ตาม
Browser Support
ฟีเจอร์นี้พร้อมให้ทดสอบใน Chrome 148 โดยเปิดใช้ Flag ฟีเจอร์แพลตฟอร์มเว็บเวอร์ชันทดลอง
ดูข้อมูลเพิ่มเติมเกี่ยวกับ position: sticky ต่อแกน
ส่วนที่ 5: ปรับให้เข้ากับรูปแบบของอุปกรณ์
สิ่งที่มีคุณค่ามากที่สุดอย่างหนึ่งเกี่ยวกับเว็บคือความยืดหยุ่น ผู้ใช้สามารถไปยังส่วนต่างๆ ของเว็บจากอุปกรณ์หลากหลายประเภท ซึ่งแต่ละอุปกรณ์ก็มีกลไกการโต้ตอบของตัวเอง เลย์เอาต์ควรปรับให้เข้ากับอุปกรณ์และวิธีการป้อนข้อมูล ไม่ว่าแป้นพิมพ์เสมือนจะเปิดอยู่หรือเป้าหมายการสัมผัสจะใช้งานได้ การคำนึงถึงรูปแบบของอุปกรณ์เมื่อออกแบบสำหรับเว็บจะช่วยให้เว็บไซต์หรือเว็บแอปของคุณมีความละเอียดอ่อนมากขึ้นและสอดคล้องกับความคาดหวังของผู้ใช้
28. ท่าทางสัมผัสการเลื่อนเกิน (พื้นที่ที่ปัดได้)
ตัวอย่างหนึ่งของการปรับให้เข้ากับรูปแบบของอุปกรณ์คือความสามารถในการใช้การโต้ตอบแบบปัดและท่าทางสัมผัสบนเว็บสำหรับอุปกรณ์เคลื่อนที่ คุณใช้แถบเลื่อนเพื่อให้ได้เอฟเฟกต์บางอย่างเหล่านี้ได้ แต่ก็ไม่ใช่แนวทางที่ใช้งานง่ายเสมอไป
ทีม Chrome กำลังพัฒนาโซลูชันแบบประกาศที่เสนอ โดยได้พูดคุยกับกลุ่มชุมชน OpenUI ซึ่งจะช่วยให้คุณสร้างพื้นที่ที่ปัดได้ซึ่งขับเคลื่อนด้วยท่าทางสัมผัสแบบเนทีฟ (เช่น รายการ Gmail ที่ปัดได้หรือเมนูด้านข้างที่ปัดเพื่อปิดได้) โดยใช้ overscrollcontainer และตัวเรียกใช้คำสั่ง ซึ่งจะทำงานผ่านการแตะและการเลื่อนได้อย่างเป็นธรรมชาติ
ดูข้อมูลเพิ่มเติมเกี่ยวกับท่าทางสัมผัสการเลื่อนเกิน
29 HTML ใน Canvas
HTML-in-Canvas API เป็นการเปลี่ยนกระบวนทัศน์ครั้งสำคัญที่ช่วยให้นักพัฒนาแอปวางองค์ประกอบ DOM จริงไว้ภายใน <canvas> (โดยใช้แอตทริบิวต์ layoutsubtree) ได้ องค์ประกอบเหล่านี้ยังคงค้นหาได้ เข้าถึงได้ และรองรับฟีเจอร์ของเบราว์เซอร์ เช่น การป้อนข้อความอัตโนมัติ ในขณะที่ช่วยให้ Shader ของ WebGL/WebGPU โต้ตอบกับองค์ประกอบเหล่านี้ได้โดยตรง
รอบตอบคำถามเร็ว
มาดูฟีเจอร์อื่นๆ ที่ทรงพลังซึ่งช่วยขับเคลื่อนเว็บไปข้างหน้ากัน
30. การย้ายที่รักษาสถานะ DOM (moveBefore())
เมธอด DOM ของ moveBefore() ช่วยให้คุณเปลี่ยนโหนด DOM หลัก (เช่น การเล่นวิดีโอ, iframe หรืออินพุตที่โฟกัส) ได้โดยไม่ต้องทำลายสถานะหรือทริกเกอร์การโหลดซ้ำ
ซึ่งหมายความว่าวิดีโอจะเล่นต่อไป, iframe จะไม่โหลดซ้ำ, ภาพเคลื่อนไหว CSS จะไม่รีสตาร์ท และช่องป้อนข้อมูลจะยังคงโฟกัสอยู่เมื่อคุณเปลี่ยนองค์ประกอบหลักในเลย์เอาต์
ดูข้อมูลเพิ่มเติมเกี่ยวกับ moveBefore()
31. CSS text-fit
text-fit เป็นพร็อพเพอร์ตี้ CSS เวอร์ชันทดลองที่ปรับขนาด font-size แบบไดนามิกเพื่อให้ข้อความพอดีกับความกว้างที่แน่นอนขององค์ประกอบที่บรรจุ (เช่น text-fit: grow per-line-all)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ text-fit
32. CSS text-box (text-box-trim และ text-box-edge)
พร็อพเพอร์ตี้ text-box (และรูปแบบเต็ม text-box-trim และ text-box-edge) จะตัดพื้นที่แนวตั้ง (บรรทัด) เหนือและใต้ข้อความ เพื่อให้มั่นใจว่ามีการจัดแนวและจัดกึ่งกลางในแนวตั้งอย่างสมบูรณ์
ดูข้อมูลเพิ่มเติมเกี่ยวกับ text-trim
33. การตกแต่งช่องว่าง CSS
การตกแต่งช่องว่าง CSS ช่วยให้ column-rule มีลักษณะคล้ายตารางกริดและ Flexbox และยังเปิดตัวพร็อพเพอร์ตี้ row-rule ใหม่ที่ช่วยให้นักพัฒนาซอฟต์แวร์จัดรูปแบบร่องระหว่างแถวและคอลัมน์ได้ ไม่ต้องยุ่งกับเส้นขอบหรือองค์ประกอบเสมือนเพื่อจัดรูปแบบกฎระหว่างแถวและคอลัมน์อีกต่อไป
Browser Support
ดูข้อมูลเพิ่มเติมเกี่ยวกับ CSS Gap Decorations
34. หน่วยวิวพอร์ตที่รับรู้แถบเลื่อน (vw, vh ฯลฯ)
หน่วยวิวพอร์ต เช่น vw และ vh จะลบขนาดของแถบเลื่อนโดยอัตโนมัติ (หากรับประกันว่ามองเห็นได้ โดยใช้ overflow-y: scroll หรือ scrollbar-gutter: stable ที่ประกาศใน :root) เพื่อป้องกันการล้นแนวนอนโดยไม่ตั้งใจเมื่อตั้งค่าองค์ประกอบเป็น 100vw
Browser Support
ดูข้อมูลเพิ่มเติมเกี่ยวกับหน่วย Viewport ที่รับรู้แถบเลื่อน
35. การเข้าถึงองค์ประกอบเสมือนด้วย JavaScript
ตอนนี้ Web API จะแสดงองค์ประกอบเสมือน CSS (เช่น ::before หรือ ::after) ให้กับ JavaScript แล้ว
คุณสามารถเรียกข้อมูลอินสแตนซ์ CSSPseudoElement ได้โดยใช้ Element.pseudo(type) และตรวจสอบว่าองค์ประกอบเสมือนใดที่ทริกเกอร์เหตุการณ์โดยใช้ Event.pseudoTarget
Browser Support
ดูข้อมูลเพิ่มเติมเกี่ยวกับ CSSPseudoElement
บทสรุป
สรุปมีอะไรใหม่ใน Web UI ก็มีเพียงเท่านี้ เราหวังว่าคุณจะใช้ฟีเจอร์เหล่านี้และสร้างอินเทอร์เฟซที่ยอดเยี่ยมด้วยฟีเจอร์เหล่านี้ แล้วพบกันใหม่ปีหน้า