CSS Custom Highlight API
Das CSS Custom Highlight API Modul bietet eine programmgesteuerte Möglichkeit, bestimmte Textbereiche, die durch Range-Objekte definiert sind, zu markieren, ohne die zugrunde liegende DOM-Struktur zu beeinträchtigen. Die Range-Objekte können dann über ::highlight() Pseudoelemente ausgewählt werden, und Sie können Hervorhebungsstile hinzufügen und entfernen. Die Funktionen dieses Moduls können Hervorhebungseffekte erzeugen, ähnlich wie Texteditoren Rechtschreib- oder Grammatikfehler hervorheben oder Code-Editoren Syntaxfehler markieren.
Das CSS Custom Highlight API erweitert das Konzept anderer Highlight-Pseudoelemente wie ::selection, ::spelling-error, ::grammar-error und ::target-text durch die Möglichkeit, beliebige Textranges zu erstellen (definiert als Range Objekte in JavaScript) und diese über CSS zu stylen, anstatt auf browserdefinierte Ranges beschränkt zu sein.
Custom Highlight API in Aktion
Um die Hervorhebung von Textranges auf einer Webseite mit dem CSS Custom Highlight API zu ermöglichen, erstellen Sie ein Range Objekt und dann ein Highlight Objekt für den Bereich. Nach der Registrierung der Hervorhebung mit der HighlightRegistry.set() Methode können Sie den Bereich mit dem ::highlight() Pseudoelement auswählen. Der im set()-Methode definierte Name wird als Parameter des ::highlight() Pseudoelement-Selektors verwendet, um diesen Bereich auszuwählen. Der durch das ::highlight() Pseudoelement ausgewählte Bereich kann mit einer begrenzten Anzahl von Eigenschaften gestylt werden.
In diesem Beispiel wird die text-decoration Eigenschaft verwendet, um den steps Hervorhebungsbereich, der durch unser JavaScript definiert ist, durchzustreichen:
::highlight(steps) {
text-decoration: line-through;
color: blue;
}
Wir erstellen ein Range mit einem Start- und Endknoten (was in diesem Fall derselbe Knoten ist). Wir legen dieses Range dann als Highlight mit der set()-Methode des CSS HighlightRegistry Interface fest.
const rangeToHighlight = new Range();
const list = document.querySelector("ol");
rangeToHighlight.setStart(list, 0);
rangeToHighlight.setEnd(list, 0);
CSS.highlights.set("steps", new Highlight(rangeToHighlight));
Ein Ereignis-Listener aktualisiert das Ende des hervorgehobenen Bereichs, wenn sich die Anzahl der abgeschlossenen Schritte ändert:
const currentPositionSlider = document.querySelector("input");
currentPositionSlider.addEventListener("change", (e) => {
rangeToHighlight.setEnd(list, e.target.value);
});
Referenz
>Pseudoelemente
Schnittstellen
Schnittstellenerweiterungen
Dieses Modul fügt Schnittstellen, die in anderen Spezifikationen definiert sind, Eigenschaften und Methoden hinzu.
Leitfäden
- CSS Custom Highlight API
-
Die Konzepte und Nutzung des CSS Custom Highlight API, einschließlich der Erstellung von
RangeundHighlightObjekten, der Registrierung der Hervorhebungen mit demHighlightRegistryund der Gestaltung der Hervorhebungen mit dem::highlight()Pseudoelement.
Verwandte Konzepte
::grammar-error::selection::spelling-error::target-textRangeSchnittstelle undRange()Konstruktor- Textfragmente
FragmentDirectiveSchnittstelle
Spezifikationen
| Specification |
|---|
| CSS Custom Highlight API Module Level 1> |