files/en-us/web/api/highlight/index.md
{{APIRef("CSS Custom Highlight API")}}
The Highlight interface of the CSS Custom Highlight API is used to represent a collection of {{domxref("Range")}} instances to be styled using the API.
To style arbitrary ranges in a page, instantiate a new Highlight object, add one or more Range objects to it, and register it using the {{domxref("HighlightRegistry")}}.
A Highlight instance is a Set-like object that can hold one or more Range objects.
{{InheritanceDiagram}}
Highlight object.The Highlight interface doesn't inherit any properties.
Highlight object. When multiple highlights overlap, the browser uses this priority to decide how to style the overlapping parts.Highlight object.The Highlight interface doesn't inherit any methods.
The following example demonstrates how specific parts of a block of text can be highlighted.
<p class="foo">Lorem ipsum dolor sit amet consectetur adipisicing elit. Exercitationem
sapiente non eum facere? Nam rem hic culpa, ipsa rerum ab itaque consectetur
molestiae dolores vitae! Quo ex explicabo tempore? Tenetur.</p>
This JavaScript code creates ranges, instantiates a new Highlight object for them, and registers it to be styled on the page:
const parentNode = document.querySelector(".foo");
const textNode = parentNode.firstChild;
// Create a couple of ranges.
const range1 = new Range();
range1.setStart(textNode, 6);
range1.setEnd(textNode, 21);
const range2 = new Range();
range2.setStart(textNode, 57);
range2.setEnd(textNode, 71);
// Create a custom highlight for these ranges.
const highlight = new Highlight(range1, range2);
// Register the ranges in the HighlightRegistry.
CSS.highlights.set("my-custom-highlight", highlight);
The following CSS code snippet demonstrates how to style the registered custom highlight by using the {{cssxref("::highlight")}} pseudo-element:
::highlight(my-custom-highlight) {
background-color: peachpuff;
}
{{EmbedLiveSample("example", "100%", '100')}}
{{Specifications}}
{{Compat}}