当前位置:首页 > 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路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…