CSS Custom Highlight API
Das CSS Custom Highlight API-Modul bietet eine programmatische Möglichkeit, bestimmte Textbereiche zu markieren, die durch Range-Objekte definiert sind, ohne die zugrunde liegende DOM-Struktur zu beeinflussen. Die Range-Objekte können dann über ::highlight() Pseudoelemente ausgewählt und mit Hervorhebungsstilen versehen oder diese entfernt werden. Die Funktionen dieses Moduls können Hervorhebungseffekte erzeugen, ähnlich wie Texteditoren Rechtschreib- oder Grammatikfehler markieren und Code-Editoren Syntaxfehler hervorheben.
Das CSS Custom Highlight API erweitert das Konzept anderer Hervorhebungs-Pseudoelemente wie ::selection, ::spelling-error, ::grammar-error, und ::target-text indem es eine Möglichkeit bietet, beliebige Textbereiche (definiert als Range Objekte in JavaScript) zu erstellen und über CSS zu stylen, anstatt auf browserdefinierte Bereiche beschränkt zu sein.
Custom Highlight API in Aktion
Um Textbereiche auf einer Webseite mit dem CSS Custom Highlight API zu stylen, erstellen Sie ein Range Objekt und dann ein Highlight Objekt für diesen Bereich. Nachdem das Highlight mittels der Methode HighlightRegistry.set() registriert wurde, können Sie den Bereich mit dem ::highlight() Pseudoelement auswählen. Der im set()-Methode definierte Name wird als Parameter des ::highlight() Pseudoelementselectors verwendet, um diesen Bereich auszuwählen. Der durch das ::highlight() Pseudoelement ausgewählte Bereich kann mit einer begrenzten Anzahl von Eigenschaften gestylt werden.
Dieses Beispiel verwendet die text-decoration Eigenschaft, um den steps-Hervorhebungsbereich zu durchstreichen, der durch unser JavaScript definiert ist:
::highlight(steps) {
text-decoration: line-through;
color: blue;
}
Wir erstellen ein Range mit einem Anfangs- und Endknoten (welcher in diesem Fall derselbe Knoten ist). Wir setzen dann diesen Bereich als Highlight mittels der set()-Methode der CSS HighlightRegistry-Schnittstelle.
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 Event-Listener aktualisiert das Ende des hervorgehobenen Bereichs, wenn sich die Anzahl der erledigten 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 Eigenschaften und Methoden zu Schnittstellen hinzu, die in anderen Spezifikationen definiert sind.
Leitfäden
- CSS custom highlight API
-
Die Konzepte und die Verwendung des CSS Custom Highlight API, einschließlich der Erstellung von
RangeundHighlightObjekten, der Registrierung der Highlights mit demHighlightRegistryund dem Stylen der Highlights mittels des::highlight()Pseudoelements.
Verwandte Konzepte
::grammar-error::selection::spelling-error::target-textRangeSchnittstelle undRange()Konstruktor- Textfragmente
FragmentDirectiveSchnittstelle
Spezifikationen
| Specification |
|---|
| CSS Custom Highlight API Module Level 1> |