Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CSS Custom Highlight API

Das Modul CSS Custom Highlight API bietet eine programmatische Möglichkeit, spezifische Textbereiche zu targetieren, 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 werden, und es können Hervorhebungsstile hinzugefügt und entfernt werden. Die Funktionen dieses Moduls können Hervorhebungseffekte erzeugen, die ähnlich sind wie die Art und Weise, wie Texteditoren Rechtschreib- oder Grammatikfehler hervorheben und Code-Editoren Syntaxfehler anzeigen.

Die CSS Custom Highlight API erweitert das Konzept anderer Pseudoelemente zur Hervorhebung wie ::selection, ::spelling-error, ::grammar-error und ::target-text durch die Bereitstellung einer Möglichkeit, beliebige Textranges (definiert als Range Objekte in JavaScript) zu erstellen und über CSS zu stylen, anstatt auf browser-definierte Ranges beschränkt zu sein.

Custom Highlight API in Aktion

Um Textbereiche auf einer Webseite mit der CSS Custom Highlight API zu stylen, erstellen Sie ein Range Objekt und dann ein Highlight Objekt für den Range. Nachdem Sie die Hervorhebung mit der Methode HighlightRegistry.set() registriert haben, 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 Bereich, der durch das ::highlight() Pseudoelement ausgewählt wird, kann mit einer begrenzten Anzahl von Eigenschaften gestylt werden.

Dieses Beispiel verwendet die Eigenschaft text-decoration, um den steps Highlight-Bereich zu durchstreichen, der durch unser JavaScript definiert wird:

css
::highlight(steps) {
  text-decoration: line-through;
  color: blue;
}

Wir erstellen ein Range mit einem Start- und Endknoten (welcher in diesem Fall derselbe Knoten ist). Dann setzen wir diesen Bereich als Highlight mit der set() Methode der CSS HighlightRegistry Schnittstelle.

js
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 abgeschlossenen Schritte ändert:

js
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 der CSS Custom Highlight API, einschließlich der Erstellung von Range- und Highlight-Objekten, der Registrierung der Hervorhebungen mit der HighlightRegistry und der Gestaltung der Hervorhebungen mit dem ::highlight() Pseudoelement.

Verwandte Konzepte

Spezifikationen

Spezifikation
CSS Custom Highlight API Module Level 1

Siehe auch