สรุปประเด็นสำคัญของ Popover API
แนะนำ Popover API
- Popover API มอบกลไกมาตรฐานที่สอดคล้องกันและยืดหยุ่นให้แก่นักพัฒนา สำหรับแสดงเนื้อหาป๊อปโอเวอร์เหนือเนื้อหาของหน้า
- เนื้อหาป๊อปโอเวอร์สามารถควบคุมแบบประกาศผ่านแอตทริบิวต์ HTML หรือควบคุมผ่าน JavaScript ได้
คุณลักษณะและวิธีใช้งานของ Popover
- ป๊อปโอเวอร์แบ่งได้เป็น 2 แบบคือ Modal และ Non-modal และป๊อปโอเวอร์ที่สร้างด้วย Popover API จะเป็นแบบ Non-modal เสมอ
- Modal หมายถึงระหว่างที่ป๊อปโอเวอร์แสดงอยู่ ส่วนที่เหลือของหน้าจะถูกเรนเดอร์ให้ไม่สามารถโต้ตอบได้
- Non-modal หมายถึงระหว่างที่ป๊อปโอเวอร์แสดงอยู่ ยังสามารถโต้ตอบกับส่วนอื่นของหน้าได้
- กรณีใช้งานทั่วไปของป๊อปโอเวอร์ ได้แก่ เมนูการทำงาน, การแจ้งเตือนแบบ "toast" ที่กำหนดเอง, คำแนะนำขององค์ประกอบฟอร์ม, ตัวเลือกเนื้อหา หรือ UI เพื่อการสอนใช้งาน
- ป๊อปโอเวอร์สามารถสร้างแบบประกาศผ่านแอตทริบิวต์ HTML หรือสร้างผ่าน JavaScript API ได้
แอตทริบิวต์ HTML ที่เกี่ยวข้องกับ Popover API
popover: แอตทริบิวต์แบบ global ที่เปลี่ยนองค์ประกอบให้เป็นองค์ประกอบป๊อปโอเวอร์
popovertarget: เปลี่ยนองค์ประกอบ <button> หรือ <input> ให้เป็นปุ่มควบคุมป๊อปโอเวอร์
popovertargetaction: ระบุการทำงานที่จะดำเนินการกับองค์ประกอบป๊อปโอเวอร์ที่ถูกควบคุมโดย <button> หรือ <input> ควบคุม
ความสามารถของ CSS ที่เกี่ยวข้องกับ Popover API
::backdrop: องค์ประกอบแบบเต็มหน้าจอที่วางอยู่ด้านหลังองค์ประกอบป๊อปโอเวอร์โดยตรง ซึ่งสามารถใช้เพิ่มเอฟเฟกต์ให้กับเนื้อหาหน้าด้านหลังป๊อปโอเวอร์ได้หากต้องการ
:popover-open: pseudo-class ที่ตรงกันเฉพาะตอนที่องค์ประกอบป๊อปโอเวอร์อยู่ในสถานะแสดงผล และใช้กำหนดสไตล์เมื่อป๊อปโอเวอร์แสดงอยู่ได้
อินเทอร์เฟซและส่วนขยายที่เกี่ยวข้องกับ Popover API
ToggleEvent: อีเวนต์ที่ใช้แจ้งให้ทราบเมื่อสถานะขององค์ประกอบป๊อปโอเวอร์สลับระหว่างการแสดงและการซ่อน
- มีการเพิ่ม instance property เช่น
HTMLElement.popover, HTMLButtonElement.popoverTargetElement, HTMLInputElement.popoverTargetElement, HTMLButtonElement.popoverTargetAction, HTMLInputElement.popoverTargetAction
- มีการเพิ่ม instance method เช่น
HTMLElement.hidePopover(), HTMLElement.showPopover(), HTMLElement.togglePopover()
- มีการเพิ่มอีเวนต์
beforetoggle, toggle
ความเห็นของ GN⁺
- Popover API มีความหมายในแง่ที่มอบวิธีการมาตรฐานสำหรับให้นักพัฒนาเว็บสร้าง UI แบบป๊อปโอเวอร์ได้ง่ายขึ้น ก่อนหน้านี้มักต้องใช้ไลบรารีหรือพัฒนาเอง
- อย่างไรก็ตาม ควรคำนึงด้วยว่า Popover API ยังเป็นฟีเจอร์เชิงทดลองและการรองรับของเบราว์เซอร์ยังมีจำกัด หากต้องการใช้ในสภาพแวดล้อมโปรดักชัน อาจต้องพิจารณาใช้ polyfill หรือใช้งานร่วมกับไลบรารีเดิม
- ไลบรารีที่ให้ความสามารถคล้ายกัน ได้แก่คอมโพเนนต์ Popover ของ Bootstrap และ Tippy.js
- เมื่อต้องใช้ Popover API ควรคำนึงถึงด้านการเข้าถึงด้วย ต้องสามารถควบคุมป๊อปโอเวอร์ด้วยคีย์บอร์ดได้ และควรมีข้อความทางเลือกสำหรับผู้ใช้ screen reader
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สรุปได้ดังนี้
<dialog>ได้เช่นกัน<dialog>แต่ในกรณีอย่างการทำพื้นหลังให้เบลอ การทำ popover ให้เป็นโมดัลก็ถือเป็นยูสเคสที่เหมาะสม แบบ<popover modal=true>จะไม่ดีกว่าหรือ?