返回

不使用插件和组件库,轻松构建 Switch 开关

前端

不使用插件与组件库,简易实现 Switch 开关组件

我们已经探索了如何在不借助插件和组件库的情况下,构建一个滑动单元格。而今天,我们将进一步深入研究如何实现一个更简单的组件:Switch 开关。

Switch 开关,也称为切换按钮,广泛应用于各种应用程序和网站中,用于在两种状态(通常为“开”和“关”)之间进行切换。与复选框不同,Switch 开关提供了一种更加直观且用户友好的方式来选择或切换设置。

HTML 结构

要构建一个 Switch 开关,我们需要使用以下 HTML 结构:

<label class="switch">
  <input type="checkbox" id="toggle">
  <span class="slider"></span>
</label>
  • <label> 元素用作开关组件的容器,并包含其子元素。
  • <input> 元素是实际的 Switch 开关,它是一个带有 type="checkbox" 的隐藏复选框。它负责切换开关的状态。
  • <span> 元素是一个滑块,它会在用户单击或切换开关时在视觉上移动。

CSS 样式

接下来,我们需要使用 CSS 来设置 Switch 开关的样式:

.switch {
  position: relative;
  display: inline-block;
  width: 48px;
  height: 24px;
  border-radius: 12px;
  background-color: #ccc;
}

.switch input[type="checkbox"] {
  display: none;
}

.switch .slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 12px;
  background-color: #fff;
  transition: .4s;
}

.switch input[type="checkbox"]:checked + .slider {
  background-color: #64dd17;
}

.switch input[type="checkbox"]:focus + .slider {
  box-shadow: 0 0 1px #64dd17;
}
  • .switch 类定义了 Switch 开关的基本样式,包括其尺寸、形状和背景颜色。
  • 隐藏复选框 .switch input[type="checkbox"]
  • .switch .slider 类设置滑块的样式,使其占据开关的整个区域并具有圆角。
  • 当复选框被选中(.switch input[type="checkbox"]:checked + .slider)时,滑块的背景颜色会切换为绿色(#64dd17)。
  • 当复选框获得焦点(.switch input[type="checkbox"]:focus + .slider)时,滑块周围会出现一个绿色的阴影。

JavaScript 功能

最后,我们需要使用 JavaScript 来处理开关的功能:

const switches = document.querySelectorAll('.switch');

switches.forEach((switchEl) => {
  const checkbox = switchEl.querySelector('input[type="checkbox"]');
  const slider = switchEl.querySelector('.slider');

  // 监听点击事件以切换开关状态
  slider.addEventListener('click', () => {
    checkbox.checked = !checkbox.checked;
  });

  // 监听键盘事件以切换开关状态
  checkbox.addEventListener('keypress', (e) => {
    if (e.keyCode === 13 || e.keyCode === 32) {
      e.preventDefault();
      checkbox.checked = !checkbox.checked;
    }
  });
});
  • 我们首先获取页面上的所有 Switch 开关元素。
  • 对于每个开关元素,我们获取其复选框和滑块元素。
  • 我们为滑块元素添加一个点击监听器,以在用户单击时切换开关状态。
  • 我们还为复选框元素添加一个键盘事件监听器,以便用户可以通过按 Enter 或空格键切换开关状态。

结论

通过使用原生 HTML、CSS 和 JavaScript,我们成功实现了 Switch 开关组件,而无需任何外部插件或组件库。这个组件可以轻松集成到任何 Web 应用程序或网站中,为用户提供一种简单且直观的方式来切换设置。

SEO 优化