重点

有限可用性

此功能不是基线,因为它在一些使用最广泛的浏览器中不起作用。

HighlightCSS 自定义突出显示 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()

返回一个新的迭代器对象,按插入顺序生成突出显示对象中的范围。

示例

以下示例演示了如何创建范围、为它们实例化一个新的 Highlight 对象,并将其注册以在页面上进行样式化

js
const parentNode = document.getElementById("foo");

// Create a couple of ranges.
const range1 = new Range();
range1.setStart(parentNode, 10);
range1.setEnd(parentNode, 20);

const range2 = new Range();
range2.setStart(parentNode, 40);
range2.setEnd(parentNode, 60);

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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅