如何在同一页面制作两个自定义颜色的slide toggle滑动切换开关
同一页面创建两个自定义颜色的Slide Toggle开关实现方法
实现思路
用原生HTML的checkbox控件作为状态核心(自带选中/未选中状态),通过CSS完全自定义外观,给每个开关单独设置类名来区分自定义颜色,无需依赖外部框架。
代码实现
HTML结构
<!-- 第一个自定义颜色的开关(绿色系) --> <div class="slide-toggle toggle-green"> <input type="checkbox" id="toggle1"> <label for="toggle1" class="toggle-slider"></label> </div> <!-- 第二个自定义颜色的开关(蓝色系) --> <div class="slide-toggle toggle-blue"> <input type="checkbox" id="toggle2"> <label for="toggle2" class="toggle-slider"></label> </div>
CSS样式
/* 基础开关样式重置与通用结构 */ .slide-toggle { position: relative; display: inline-block; width: 60px; height: 34px; margin: 0 10px; } .slide-toggle input { opacity: 0; width: 0; height: 0; } .toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; border-radius: 34px; transition: .4s; } /* 未选中状态的背景色 */ .toggle-green .toggle-slider, .toggle-blue .toggle-slider { background-color: #ccc; } /* 选中状态的自定义背景色 */ .toggle-green input:checked + .toggle-slider { background-color: #4CAF50; } .toggle-blue input:checked + .toggle-slider { background-color: #2196F3; } /* 滑块样式 */ .toggle-slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; border-radius: 50%; transition: .4s; } /* 选中时滑块移动位置 */ input:checked + .toggle-slider:before { transform: translateX(26px); }
说明
- 每个开关通过独立的类(
toggle-green、toggle-blue)控制自定义颜色,你可以随意修改background-color的值来调整开关的激活态颜色 - 基础样式里的宽度、高度、滑块大小都可以根据需求调整
- 纯CSS实现,无需额外JavaScript,状态由原生checkbox维护,兼容性好
内容的提问来源于stack exchange,提问作者Sachin kumar
相关产品推荐
相关产品推荐

