jQuery 实现每几秒随机高亮列表单词

作者:技术拾光

时间:2026-07-25

浏览:332

基于jQuery,将分隔符连接的字符串拆分为独立单词并用span包裹,通过setInterval定时器每隔1.5秒随机移除并添加高亮类,实现单词动态循环高亮。需注意用.text()提取文本、去除首尾空格,并配合CSS过渡动画增强视觉效果。

文章目录

将分隔符连接的字符串拆分为独立单词,并用 包裹,通过定时器随机高亮其中一个单词,循环切换,实现动态视觉强调效果。这种交互常见于产品介绍页、关键词强调场景和教学提示中。

实现“每几秒随机高亮一个单词”的核心逻辑分为三步:解析文本 → 结构化DOM → 定时切换高亮。以下基于 jQuery 的完整方案可直接运行。

步骤一:结构化原始文本

从容器中提取纯文本(使用 .text() 而非 .html(),避免误解析内部 HTML 标签),按“ - ”分割成单词数组,再用 包裹每个单词,最后重新塞回 DOM。

const $container = $("#highlight-list");
const words = $container.text().split(" - ");
const html = words.map(word => `${word.trim()}`).join(" - ");
$container.html(html);

注意:用 .text() 提取内容可确保安全;.trim() 清除首尾空格,使结果更健壮。

步骤二:定时随机高亮

通过 setInterval 定时器,每 1.5 秒执行一次高亮逻辑:先移除所有已有 .highlight 类,再随机生成索引,为对应 添加高亮类。

setInterval(() => {
  const $spans = $("#highlight-list > span");
  $spans.removeClass("highlight");
  const randomIndex = Math.floor(Math.random() * $spans.length);
  $spans.eq(randomIndex).addClass("highlight");
}, 1500);

提示:若单词数量较少(如三四个),连续两次高亮同一单词的概率较高。可记录上一次高亮索引进行去重校验(进阶部分会提到),避免视觉疲劳。

步骤三:定义高亮样式

配合 CSS 增强视觉效果,如背景色加文字反色,并加入过渡动画。

#highlight-list > span {
  padding: 0.25em 0.5em;
  margin: 0 2px;
  border-radius: 3px;
  transition: all 0.3s ease;
}

.highlight {
  background-color: #6a0dad;
  color: white;
  font-weight: bold;
  transform: scale(1.1);
}

完整可运行示例

以下示例可直接复制运行。



  


  
Apple - Banana - Cherry - Date

进阶建议

  • 去重优化:若单词数少(如3个),可缓存上一次索引,重试时生成不同值,避免视觉重复感。
  • 性能考虑:单词量较大时,建议使用 documentFragment 或 innerHTML 批量操作,减少重排次数。
  • 无障碍增强:为 .highlight 添加 aria-live="polite",使屏幕阅读器能感知变化,提升无障碍体验。

该方案轻量、可扩展,适用于产品介绍、关键词强调、教学提示等多种场景,可直接使用。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›