当前位置:首页 > 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实现图片移动

怎么用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实现对齐

Js实现对齐

使用CSS实现文本对齐 CSS提供了多种文本对齐方式,通过text-align属性可以轻松实现左对齐、右对齐、居中对齐和两端对齐。例如: .left-align { text-align: le…

js 实现toggle

js 实现toggle

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

Js轮训实现

Js轮训实现

轮询的实现方法 轮询(Polling)是一种客户端定期向服务器发送请求以获取最新数据的技术。适用于实时性要求不高的场景,实现简单但可能增加服务器负载。 使用setInterval实现基础轮询 通过s…