组合实现开关按钮的基础结构。通过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监听复选框状态变化,执行自定义操作:

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);
}

动画效果增强

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

.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状态:

js实现开关按钮

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

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…