当前位置:首页 > 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';
});

实现多状态切换

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

Js实现 toggle

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 属性。

Js实现 toggle

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 过渡实现平滑的切换效果。

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实现图片移动

怎么用Js实现图片移动

使用JavaScript实现图片移动 通过修改CSS属性实现移动 使用JavaScript动态修改图片的style.left和style.top属性可以实现移动效果。需要将图片的position属性设…

js实现toggle

js实现toggle

实现基本的toggle功能 在JavaScript中实现toggle功能可以通过多种方式完成。最基本的实现方式是切换一个布尔值或元素的显示状态: let isToggled = false; fu…

Js实现冰墩墩

Js实现冰墩墩

使用Canvas绘制冰墩墩 在JavaScript中,可以通过Canvas API绘制冰墩墩形象。以下是实现的基本代码框架: const canvas = document.getElementBy…

Js实现reset

Js实现reset

使用 HTMLFormElement.reset() 方法 通过 JavaScript 直接调用表单的 reset() 方法可以重置表单内的所有输入字段为初始值: document.getElem…

Js实现utext

Js实现utext

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

Js实现const

Js实现const

在 JavaScript 中,const 是用于声明常量的关键字,其值在声明后不能被重新赋值。以下是关于 const 的详细说明和用法: 基本语法 const identifier = value…