Highlight

基准线 2025
新推出

自 2025 年 6 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于旧设备或浏览器。

Highlight 接口是 CSS 自定义高亮 API 的一部分,用于表示一组要使用该 API 进行样式的 Range 实例。

要对页面中的任意范围进行样式设置,请实例化一个新的 Highlight 对象,向其中添加一个或多个 Range 对象,然后使用 HighlightRegistry 注册它。

Highlight 实例是一个 Set 样式的对象,可以包含一个或多个 Range 对象。

构造函数

Highlight()

返回一个新创建的 Highlight 对象。

实例属性

Highlight 接口不继承任何属性。

Highlight.priority

一个数字,表示此 Highlight 对象 的优先级。当多个高亮重叠时,浏览器使用此优先级来决定如何为重叠部分设置样式。

Highlight.size 只读

返回 Highlight 对象中范围的数量。

Highlight.type

一个枚举的 String,用于指定高亮的语义含义。这允许辅助技术在将高亮显示给用户时包含此含义。

实例方法

Highlight 接口不继承任何方法。.

Highlight.add()

向此高亮添加一个新范围。

Highlight.clear()

从此高亮中移除所有范围。

Highlight.delete()

从此高亮中移除一个范围。

Highlight.entries()

返回一个包含高亮对象中每个范围的新迭代器对象,按插入顺序排列。

Highlight.forEach()

对高亮对象中的每个范围调用一次给定的回调函数,按插入顺序排列。

Highlight.has()

返回一个布尔值,断言一个范围是否存在于高亮对象中。

Highlight.keys()

Highlight.values() 的别名。

Highlight.values()

返回一个包含高亮对象中范围的新迭代器对象,按插入顺序排列。

示例

以下示例演示了如何对文本块的特定部分进行高亮显示。

html
<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>

此 JavaScript 代码创建 范围,为它们实例化一个新的 Highlight 对象,并 注册它以便在页面上进行样式设置。

js
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);

以下 CSS 代码片段演示了如何使用 ::highlight 伪元素来设置已注册的自定义高亮的样式。

css
::highlight(my-custom-highlight) {
  background-color: peachpuff;
}

结果

规范

规范
CSS 自定义高亮 API 模块级别 1
# highlight

浏览器兼容性

另见