当前位置:首页 > JavaScript

js 实现开关

2026-04-05 19:07:43JavaScript

使用HTML和CSS创建开关样式

创建一个基本的开关样式需要HTML和CSS的配合。HTML提供结构,CSS负责视觉效果。

<label class="switch">
  <input type="checkbox">
  <span class="slider round"></span>
</label>
.switch {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  transition: .4s;
}

input:checked + .slider {
  background-color: #2196F3;
}

input:checked + .slider:before {
  transform: translateX(26px);
}

.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}

添加JavaScript交互功能

通过JavaScript监听开关状态变化并执行相应操作。

const toggleSwitch = document.querySelector('.switch input[type="checkbox"]');

function switchTheme(e) {
  if (e.target.checked) {
    console.log('开关开启');
    // 开启状态下的操作
  } else {
    console.log('开关关闭');
    // 关闭状态下的操作
  }
}

toggleSwitch.addEventListener('change', switchTheme, false);

使用第三方库实现高级开关

对于更复杂的需求,可以考虑使用第三方库如switchery。

js 实现开关

安装switchery:

npm install switchery

使用示例:

js 实现开关

import Switchery from 'switchery';

const elem = document.querySelector('.js-switch');
const init = new Switchery(elem, {
  color: '#41b7f1',
  secondaryColor: '#dedede',
  size: 'small'
});

响应式开关实现

确保开关在不同设备上都能良好显示,可以添加响应式设计。

@media screen and (max-width: 600px) {
  .switch {
    width: 50px;
    height: 28px;
  }

  .slider:before {
    height: 20px;
    width: 20px;
  }

  input:checked + .slider:before {
    transform: translateX(22px);
  }
}

无障碍访问优化

为开关添加适当的ARIA属性,提升无障碍访问体验。

<label class="switch">
  <input type="checkbox" role="switch" aria-checked="false">
  <span class="slider round"></span>
</label>
const switchInput = document.querySelector('.switch input');
switchInput.addEventListener('change', function() {
  this.setAttribute('aria-checked', this.checked);
});

标签: js
分享给朋友:

相关文章

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现图片放大

js实现图片放大

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

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…