Tóm tắt các nội dung chính của Popover API
Giới thiệu về Popover API
- Popover API cung cấp cho nhà phát triển một cơ chế tiêu chuẩn, nhất quán và linh hoạt để hiển thị nội dung popover phía trên nội dung trang
- Nội dung popover có thể được điều khiển theo cách khai báo bằng thuộc tính HTML hoặc thông qua JavaScript
Đặc điểm và cách sử dụng Popover
- Popover được chia thành hai kiểu là Modal và Non-modal, và popover được tạo bằng Popover API luôn là Non-modal
- Modal nghĩa là phần còn lại của trang sẽ được render ở trạng thái không thể tương tác trong khi popover đang hiển thị
- Non-modal nghĩa là vẫn có thể tương tác với phần còn lại của trang trong khi popover đang hiển thị
- Các trường hợp sử dụng phổ biến của popover gồm menu hành động, thông báo "toast" tùy biến, gợi ý cho phần tử biểu mẫu, bộ chọn nội dung hoặc UI hướng dẫn
- Popover có thể được tạo theo cách khai báo thông qua thuộc tính HTML hoặc thông qua JavaScript API
Các thuộc tính HTML liên quan đến Popover API
popover: thuộc tính toàn cục biến một phần tử thành phần tử popover
popovertarget: biến phần tử <button> hoặc <input> thành nút điều khiển popover
popovertargetaction: chỉ định thao tác sẽ được thực hiện trên phần tử popover do <button> hoặc <input> điều khiển
Các tính năng CSS liên quan đến Popover API
::backdrop: phần tử toàn màn hình được đặt ngay phía sau phần tử popover, có thể dùng để thêm hiệu ứng cho nội dung trang phía sau popover nếu muốn
:popover-open: pseudo-class chỉ khớp khi phần tử popover đang ở trạng thái hiển thị, có thể dùng để áp dụng style khi popover được hiển thị
Các interface và phần mở rộng liên quan đến Popover API
ToggleEvent: biểu diễn sự kiện thông báo cho người dùng khi trạng thái của phần tử popover chuyển đổi giữa hiển thị và ẩn
- Đã bổ sung các thuộc tính thể hiện như
HTMLElement.popover, HTMLButtonElement.popoverTargetElement, HTMLInputElement.popoverTargetElement, HTMLButtonElement.popoverTargetAction, HTMLInputElement.popoverTargetAction
- Đã bổ sung các phương thức thể hiện như
HTMLElement.hidePopover(), HTMLElement.showPopover(), HTMLElement.togglePopover()
- Đã bổ sung các sự kiện
beforetoggle, toggle
Ý kiến của GN⁺
- Popover API có ý nghĩa ở chỗ cung cấp cho nhà phát triển web một cách chuẩn hóa để dễ dàng triển khai UI popover. Trước đây, thường phải dùng thư viện hoặc tự triển khai
- Tuy vậy, cần lưu ý rằng Popover API vẫn còn là tính năng thử nghiệm và phạm vi hỗ trợ của trình duyệt còn hạn chế. Để sử dụng trong môi trường production, có thể cần cân nhắc dùng kèm polyfill hoặc các thư viện hiện có
- Một số thư viện cung cấp tính năng tương tự gồm có component Popover của Bootstrap, Tippy.js, v.v.
- Khi sử dụng Popover API, cũng cần cân nhắc khía cạnh accessibility. Cần có khả năng điều khiển popover bằng bàn phím, đồng thời cung cấp văn bản thay thế cho người dùng screen reader
1 bình luận
Ý kiến trên Hacker News
Tóm lại như sau.
<dialog>.<dialog>, nhưng trong các trường hợp như làm mờ nền thì việc biến popover thành modal mới là use case phù hợp. Liệu<popover modal=true>có phải là cách tốt hơn không?