组合实现开关按钮的基础结构。通过CSS隐藏原生复选框,用模…">
当前位置:首页 > JavaScript

js实现开关按钮

2026-03-01 15:15:42JavaScript

实现开关按钮的HTML结构

使用<label><input type="checkbox">组合实现开关按钮的基础结构。通过CSS隐藏原生复选框,用<span>模拟按钮外观:

<label class="switch">
  <input type="checkbox">
  <span class="slider"></span>
</label>

基础CSS样式

为开关按钮添加视觉样式,包括未激活状态、激活状态和滑块动画效果:

.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;
  border-radius: 34px;
}

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

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

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

添加交互效果

通过JavaScript监听复选框状态变化,执行自定义操作:

js实现开关按钮

document.querySelector('.switch input').addEventListener('change', function() {
  if(this.checked) {
    console.log('开关已打开');
    // 执行打开状态的操作
  } else {
    console.log('开关已关闭');
    // 执行关闭状态的操作
  }
});

自定义样式扩展

通过修改CSS变量实现颜色和尺寸的快速调整:

:root {
  --switch-width: 60px;
  --switch-height: 34px;
  --slider-color: #ccc;
  --active-color: #2196F3;
}

.slider {
  width: var(--switch-width);
  height: var(--switch-height);
  background-color: var(--slider-color);
}

input:checked + .slider {
  background-color: var(--active-color);
}

动画效果增强

为开关添加弹性动画或渐变效果提升用户体验:

js实现开关按钮

.slider:before {
  transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

input:checked + .slider {
  box-shadow: 0 0 10px rgba(33, 150, 243, 0.5);
}

无障碍支持

添加ARIA属性确保屏幕阅读器能正确识别控件状态:

<label class="switch">
  <input type="checkbox" role="switch" aria-checked="false">
  <span class="slider"></span>
</label>

通过JavaScript动态更新ARIA状态:

const switchBtn = document.querySelector('.switch input');
switchBtn.addEventListener('change', function() {
  this.setAttribute('aria-checked', this.checked);
});

标签: 按钮js
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

css制作按钮

css制作按钮

基础按钮样式 使用CSS创建一个基础按钮需要定义display、padding、background-color和border等属性。以下是一个简单的示例: .button { display:…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…