当前位置:首页 > JavaScript

js实现高亮显示

2026-04-04 03:21:42JavaScript

高亮显示的实现方法

使用CSS类切换

通过JavaScript动态添加或移除CSS类实现高亮效果。定义一个高亮样式类:

.highlight {
  background-color: yellow;
  font-weight: bold;
}

使用JavaScript切换类:

const element = document.getElementById('target');
element.classList.add('highlight');

// 取消高亮
element.classList.remove('highlight');

动态修改内联样式

直接修改元素的style属性实现高亮:

js实现高亮显示

const element = document.getElementById('target');
element.style.backgroundColor = 'yellow';
element.style.fontWeight = 'bold';

// 恢复默认
element.style.backgroundColor = '';
element.style.fontWeight = '';

文本节点高亮处理

对于需要高亮文本片段的情况,可以使用Range和DocumentFragment:

function highlightText(text, element) {
  const content = element.textContent;
  const index = content.indexOf(text);

  if (index >= 0) {
    const range = document.createRange();
    const span = document.createElement('span');
    span.className = 'highlight';

    range.setStart(element.firstChild, index);
    range.setEnd(element.firstChild, index + text.length);
    range.surroundContents(span);
  }
}

使用第三方库

考虑使用专门的文本高亮库如Mark.js:

js实现高亮显示

// 引入Mark.js后
const instance = new Mark(document.querySelector('body'));
instance.mark('keyword', {
  className: 'highlight'
});

动画高亮效果

添加过渡动画增强视觉效果:

.highlight {
  background-color: yellow;
  transition: background-color 0.5s ease;
}

.highlight-fade {
  background-color: transparent;
}
element.classList.add('highlight');
setTimeout(() => {
  element.classList.replace('highlight', 'highlight-fade');
}, 1000);

高亮性能优化

对于大量元素的高亮操作,使用文档片段减少重绘:

const fragment = document.createDocumentFragment();
items.forEach(item => {
  const clone = item.cloneNode(true);
  clone.classList.add('highlight');
  fragment.appendChild(clone);
});
container.appendChild(fragment);

事件驱动高亮

响应鼠标事件实现交互式高亮:

document.addEventListener('mouseover', (e) => {
  if (e.target.matches('.highlightable')) {
    e.target.classList.add('highlight');
  }
});

document.addEventListener('mouseout', (e) => {
  if (e.target.matches('.highlightable')) {
    e.target.classList.remove('highlight');
  }
});

每种方法适用于不同场景,CSS类切换适合简单交互,文本节点处理适合搜索高亮,第三方库适合复杂文本匹配,动画效果增强用户体验,性能优化处理大数据量情况。

标签: js高亮
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…