当前位置:首页 > 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 属性实现即时样式变更:

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-* 属性存储状态

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

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');
  }
});

性能优化建议

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

js实现高亮切换

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

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现延迟

js实现延迟

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

js实现瀑布流

js实现瀑布流

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…