怎么制作css开关
使用纯CSS创建开关
HTML结构需要包含一个隐藏的复选框和关联的标签元素:
<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);
}
添加开关状态文本
在滑块上显示ON/OFF文字提示:
<label class="switch">
<input type="checkbox">
<span class="slider">
<span class="on">ON</span>
<span class="off">OFF</span>
</span>
</label>
添加对应的CSS样式:

.slider .on, .slider .off {
position: absolute;
font-size: 10px;
color: white;
top: 50%;
transform: translateY(-50%);
}
.slider .on {
left: 8px;
display: none;
}
.slider .off {
right: 8px;
}
input:checked + .slider .on {
display: block;
}
input:checked + .slider .off {
display: none;
}
创建方形开关样式
修改圆角属性实现直角开关:
.square .slider {
border-radius: 0;
}
.square .slider:before {
border-radius: 0;
}
添加禁用状态
通过CSS选择器实现禁用样式:

input:disabled + .slider {
opacity: 0.5;
cursor: not-allowed;
}
HTML中禁用开关:
<label class="switch">
<input type="checkbox" disabled>
<span class="slider"></span>
</label>
实现不同尺寸开关
通过CSS变量控制开关尺寸:
.small-switch {
--width: 40px;
--height: 24px;
--slider-size: 16px;
}
.large-switch {
--width: 80px;
--height: 45px;
--slider-size: 35px;
}
应用尺寸变量到样式规则:
.switch {
width: var(--width);
height: var(--height);
}
.slider:before {
width: var(--slider-size);
height: var(--slider-size);
}
input:checked + .slider:before {
transform: translateX(calc(var(--width) - var(--slider-size) - 8px));
}






