CSS custom highlight API
Module CSS custom highlight API cung cấp một cách lập trình để nhắm vào các phạm vi văn bản cụ thể được xác định bởi các đối tượng range, mà không ảnh hưởng đến cấu trúc DOM bên dưới. Các đối tượng range sau đó có thể được chọn thông qua pseudo-element ::highlight(), và có thể thêm hoặc xóa các style highlight. Các tính năng của module này có thể tạo ra các hiệu ứng highlight tương tự như cách các trình soạn thảo văn bản highlight lỗi chính tả hoặc ngữ pháp, và các trình soạn thảo code highlight lỗi cú pháp.
CSS Custom Highlight API mở rộng khái niệm của các pseudo-element highlight khác như ::selection, ::spelling-error, ::grammar-error, và ::target-text bằng cách cung cấp một cách tạo ra các phạm vi văn bản tùy ý (được định nghĩa là các đối tượng Range trong JavaScript) và tạo style cho chúng qua CSS, thay vì bị giới hạn ở các phạm vi do trình duyệt định nghĩa.
CSS custom highlight API trong hoạt động
Để bật tạo style cho các phạm vi văn bản trên trang web bằng CSS Custom Highlight API, bạn tạo một đối tượng Range, sau đó một đối tượng Highlight cho phạm vi đó. Sau khi đăng ký highlight bằng phương thức HighlightRegistry.set(), bạn có thể chọn phạm vi đó bằng pseudo-element ::highlight(). Tên được định nghĩa trong phương thức set() được sử dụng làm tham số của bộ chọn pseudo-element ::highlight() để chọn phạm vi đó. Phạm vi được chọn bởi pseudo-element ::highlight() có thể được tạo style bằng một số thuộc tính giới hạn.
Ví dụ này sử dụng thuộc tính text-decoration để gạch ngang phạm vi highlight steps được định nghĩa bởi JavaScript của chúng ta:
::highlight(steps) {
text-decoration: line-through;
color: blue;
}
Chúng ta tạo một Range với node bắt đầu và kết thúc (là cùng một node trong trường hợp này). Sau đó chúng ta đặt phạm vi này là Highlight bằng phương thức set() của interface CSS HighlightRegistry.
const rangeToHighlight = new Range();
const list = document.querySelector("ol");
rangeToHighlight.setStart(list, 0);
rangeToHighlight.setEnd(list, 0);
CSS.highlights.set("steps", new Highlight(rangeToHighlight));
Một event listener cập nhật cuối của phạm vi được highlight khi số bước hoàn thành thay đổi:
const currentPositionSlider = document.querySelector("input");
currentPositionSlider.addEventListener("change", (e) => {
rangeToHighlight.setEnd(list, e.target.value);
});
Tham chiếu
>Pseudo-elements
Interfaces
Mở rộng interface
Module này thêm các thuộc tính và phương thức vào các interface được định nghĩa trong các đặc tả khác.
Hướng dẫn
- CSS custom highlight API
-
Các khái niệm và cách sử dụng CSS custom highlight API, bao gồm tạo các đối tượng
RangevàHighlight, đăng ký highlight bằngHighlightRegistry, và tạo style cho highlight bằng pseudo-element::highlight().
Các khái niệm liên quan
::grammar-error::selection::spelling-error::target-text- Interface
Rangevà constructorRange() - Text fragments
- Interface
FragmentDirective
Đặc tả
| Specification |
|---|
| CSS Custom Highlight API Module Level 1> |