CSS 如何实现开关按钮(switch)

/attachments/3c3c91087455ce213729ff00352ce488.png

推荐使用现成的组件,不用重复造轮子。

  • Next.js 可以用 [nextui-org[(https://nextui.org/docs/components/switch)
  1. (关键)使用 <Label> 关联 <Input type=checkbox>,响应鼠标操作
    方法一:按照固定层级:<label><input /> <span or any other elment> </label>
    方法二:使用 labelfor 属性等于 input 的ID

  2. 隐藏 <Input>
    display:none

  3. 通过设置 label 的样式来实现 switch 的视觉样式

    • label:before 伪元素,是 switch 按钮的样式
    • label:after 是按钮底座 switch base 的样式
    • 或者时 label 的子元素来设计样式
  4. 通过 input:checked 状态来设置相关元素跟随变化。包括 label 的样式

    • input:checked + label {} 开(选中)时的样式
    • input:not(:checked) + label {} 关(未选中)时的样式

参考文章: