Highlight

纯展示文本高亮:在 sourceString 中标记 searchWords,命中片段默认用 <mark> 包裹。纯文本输出(HTML 会被转义而非解析),支持大小写敏感、正则转义开关、自定义包裹元素/类名/样式,以及对象数组差异化样式(不同关键词单独 className/style)。

设计文档

如何引入

import { Highlight } from '@chenzy-design/svelte';

基本用法

通过 searchWords 指定需要高亮的关键字,通过 sourceString 指定源文本。匹配到的文字默认用 <mark> 包裹高亮。

Semi Design 到 Any Design 快速定义你的设计系统,并应用在设计稿和代码中

指定高亮样式

默认高亮背景为 yellow-4、文字黑色(暗色为 yellow-2 + 白字)。通过 highlightClassName、highlightStyle 自定义高亮样式。

Semi Design 到 Any Design 快速定义你的设计系统,并应用在设计稿和代码中

Semi Design 到 Any Design 快速定义你的设计系统,并应用在设计稿和代码中

不同文本使用差异化样式

searchWords 传入对象数组时,可通过 text 指定高亮文本,同时为每个关键词单独指定 className、style。

Semi Design 到 Any Design 快速定义你的设计系统,并应用在设计稿和代码

指定高亮标签

默认将命中文本用 mark 标签包裹,可通过 component 重新指定标签(如 strong)。

Semi Design 到 Any Design 快速定义你的设计系统,并应用在设计稿和代码中

多关键词

searchWords 支持字符串数组,同时高亮多个关键词。

Svelte 是一个前端框架,它在构建时将组件编译成原生 JavaScript,无需运行时框架开销。

大小写敏感

默认忽略大小写,设置 caseSensitive 开启大小写严格匹配。

大小写不敏感(默认):
Hello World, hello svelte
大小写敏感:
Hello World, hello svelte

API 参考

Highlight

Props

属性说明类型默认值
sourceString待处理原始文本(纯文本,HTML 被转义)string''
searchWords需高亮关键词;字符串/字符串数组,或对象数组 { text, className, style } 差异化样式(Semi v2.71+);空文本忽略string | string[] | HighlightWord | HighlightWord[][]
caseSensitive是否大小写敏感booleanfalse
autoEscape是否对关键词正则转义;关闭后 searchWords 视为正则源booleantrue
component高亮片段包裹标签名string'mark'
highlightClassName追加到每个高亮片段的类名string''
highlightStyle追加到每个高亮片段的内联样式string''

Accessibility

ARIA rolenone
  • 高亮片段用原生 <mark> 元素承载浏览器/AT 内建“标记”语义
  • 不可聚焦、无 tabindex,避免搜索结果列表产生大量 Tab 停留点
  • 默认不对每个高亮加 aria-label,避免逐字播报噪音;命中计数由调用方外层 live region 负责
  • 语义+背景双通道区分,不仅靠颜色(WCAG 1.4.1)

设计变量

变量默认值用法
--cd-color-highlight #000000highlight · 颜色
--cd-color-highlight-bg #fbda32highlight · 颜色背景色
--cd-highlight-bg var(--cd-color-highlight-bg)命中片段背景色(Semi $color-highlight-text-bg-default):亮 yellow-4 / 暗 yellow-2
--cd-highlight-color var(--cd-color-highlight)命中片段文字色(Semi $color-highlight-text-default):亮 black / 暗 white