当前位置:首页 > JavaScript

Js实现 toggle

2026-02-01 15:42:02JavaScript

使用 classList.toggle 方法

通过 classList.toggle 可以轻松切换元素的类名。该方法接受一个类名作为参数,如果元素已存在该类名则移除,不存在则添加。

const button = document.querySelector('.toggle-button');
button.addEventListener('click', () => {
  document.querySelector('.target-element').classList.toggle('active');
});

使用 data-* 属性存储状态

当需要跟踪更复杂的状态时,可以使用 data-* 属性来存储当前状态值。

const toggleBtn = document.getElementById('toggle-btn');
toggleBtn.addEventListener('click', function() {
  const isActive = this.getAttribute('data-active') === 'true';
  this.setAttribute('data-active', !isActive);
  document.querySelector('.content').style.display = isActive ? 'none' : 'block';
});

实现多状态切换

对于需要循环多个状态的切换,可以维护一个状态数组和当前索引。

let currentIndex = 0;
const states = ['state1', 'state2', 'state3'];
const element = document.querySelector('.multi-state');

document.querySelector('.toggle-multi').addEventListener('click', () => {
  currentIndex = (currentIndex + 1) % states.length;
  element.className = `multi-state ${states[currentIndex]}`;
});

使用 CSS 变量实现样式切换

通过修改 CSS 变量值来实现动态样式切换。

const root = document.documentElement;
const toggleBtn = document.querySelector('.theme-toggle');

toggleBtn.addEventListener('click', () => {
  const currentTheme = getComputedStyle(root).getPropertyValue('--main-color');
  root.style.setProperty('--main-color', currentTheme === '#333' ? '#fff' : '#333');
});

实现无障碍 toggle

为屏幕阅读器添加适当的 ARIA 属性。

const toggleButton = document.querySelector('.aria-toggle');
toggleButton.addEventListener('click', function() {
  const expanded = this.getAttribute('aria-expanded') === 'true';
  this.setAttribute('aria-expanded', !expanded);
  document.getElementById('dropdown').hidden = expanded;
});

使用 Proxy 实现响应式 toggle

通过 Proxy 对象创建响应式的状态管理。

const state = new Proxy({ isOpen: false }, {
  set(target, property, value) {
    target[property] = value;
    document.querySelector('.panel').classList.toggle('open', value);
    return true;
  }
});

document.querySelector('.proxy-toggle').addEventListener('click', () => {
  state.isOpen = !state.isOpen;
});

实现动画过渡效果

结合 CSS 过渡实现平滑的切换效果。

Js实现 toggle

const animatedToggle = document.querySelector('.animate-toggle');
animatedToggle.addEventListener('click', () => {
  const box = document.querySelector('.animated-box');
  box.style.transform = box.style.transform === 'translateX(100px)' 
    ? 'translateX(0)' 
    : 'translateX(100px)';
});

标签: Jstoggle
分享给朋友:

相关文章

Js实现utext

Js实现utext

JavaScript 实现 UText(用户文本处理) 在 JavaScript 中实现 UText(User Text)处理通常涉及文本操作、格式化或自定义功能。以下是几种常见的实现方法: 字符串…

js 实现toggle

js 实现toggle

实现基本的 toggle 功能 在 JavaScript 中实现 toggle 功能可以通过切换布尔值或类名来实现。以下是一个简单的 toggle 实现,用于切换元素的显示和隐藏: function…

Js实现wordclock

Js实现wordclock

实现 Word Clock 的基本思路 Word Clock 是一种以文字显示时间的时钟,例如 "IT IS HALF PAST TEN"。实现这种时钟需要将时间转换为对应的单词组合。 时间转换为单…

Js实现allkeys

Js实现allkeys

实现 allKeys 方法 在 JavaScript 中,allKeys 方法通常用于获取对象的所有可枚举属性(包括原型链上的属性)。以下是几种实现方式: 使用 for...in 循环 通过…

怎么用Js实现图片移动

怎么用Js实现图片移动

使用CSS和JavaScript实现图片移动 通过修改图片的CSS属性(如left、top或transform)可以实现图片移动效果。以下是两种常见方法: 方法一:通过修改left和top属性 假设…

Js实现reset

Js实现reset

重置表单元素 在JavaScript中重置表单可以通过调用表单元素的reset()方法实现。该方法会将所有表单控件恢复到初始值。 document.getElementById('myForm').…