当前位置:首页 > JavaScript

js实现高亮切换

2026-04-07 13:17:47JavaScript

实现高亮切换的 JavaScript 方法

使用 classList 切换类名

通过 classList.toggle() 动态添加或移除高亮样式类,适用于现代浏览器。

const element = document.getElementById('target');
element.addEventListener('click', () => {
  element.classList.toggle('highlight');
});

CSS 部分需定义高亮样式:

.highlight {
  background-color: yellow;
  color: black;
}

动态修改 style 属性

直接操作元素的 style 属性实现即时样式变更:

js实现高亮切换

const element = document.querySelector('.item');
let isHighlighted = false;

element.addEventListener('click', () => {
  isHighlighted = !isHighlighted;
  element.style.backgroundColor = isHighlighted ? '#ffeb3b' : '';
  element.style.color = isHighlighted ? '#000' : '';
});

多元素高亮切换

为多个元素实现单选高亮效果时,需先清除其他元素的高亮状态:

const items = document.querySelectorAll('.list-item');
items.forEach(item => {
  item.addEventListener('click', () => {
    items.forEach(i => i.classList.remove('active'));
    item.classList.add('active');
  });
});

使用 data-* 属性存储状态

通过自定义属性记录高亮状态,适合复杂交互场景:

js实现高亮切换

document.querySelectorAll('[data-highlight]').forEach(el => {
  el.addEventListener('click', function() {
    const currentState = this.getAttribute('data-highlight');
    this.setAttribute('data-highlight', currentState === 'on' ? 'off' : 'on');
    this.style.backgroundColor = currentState === 'on' ? '' : 'gold';
  });
});

动画高亮效果

结合 CSS transition 实现平滑的高亮过渡:

.highlight-transition {
  transition: background-color 0.3s ease;
}
document.getElementById('animated-btn').addEventListener('click', function() {
  this.classList.toggle('highlight');
});

键盘导航高亮

通过键盘事件实现高亮切换:

let currentIndex = 0;
const menuItems = document.querySelectorAll('.menu-item');

document.addEventListener('keydown', (e) => {
  if (e.key === 'ArrowDown') {
    menuItems[currentIndex].classList.remove('highlight');
    currentIndex = (currentIndex + 1) % menuItems.length;
    menuItems[currentIndex].classList.add('highlight');
  }
  if (e.key === 'ArrowUp') {
    menuItems[currentIndex].classList.remove('highlight');
    currentIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;
    menuItems[currentIndex].classList.add('highlight');
  }
});

性能优化建议

对于大量元素的高亮操作,建议使用事件委托:

document.getElementById('container').addEventListener('click', (e) => {
  if (e.target.matches('.highlightable')) {
    e.target.classList.toggle('active');
  }
});

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

相关文章

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js实现菜单导航

js实现菜单导航

实现基础菜单导航结构 使用HTML和CSS创建菜单的基本结构,再通过JavaScript添加交互功能。HTML部分通常使用<ul>和<li>标签构建层级: <nav i…

js实现保存图片

js实现保存图片

使用Canvas绘制并保存图片 在HTML中创建一个Canvas元素,通过JavaScript绘制内容后转换为图片并保存。Canvas的toDataURL方法可将画布内容转为Base64编码的图片数据…