纯CSS设置checkbox样式

2,640 阅读1分钟

先隐藏需要自定义样式的checkbox复选框

input[type=checkbox]{
  visibility:hidden;
}

隐藏掉Checkbox复选框后,添加一个label HTML元素,并设置for属性指向对象checkbox元素。

html结构:

<div class='agree-box'>
  <input type='checkbox' id='switch' name='agree'/>
  <label for='switch'></label>
</div>

CSS结构:

.agree-box{
  position: relative;   //重点是位label标签提供绝对定位参考
  width: 40px;
  height: 20px;
  background-color: #ccc;
  border-radius: 10px;
}
​
input[type=checkbox] {   //隐藏checkbox元素
  visibility: hidden;
}
​
.check-label {
  position: absolute;   //开启绝对定位,方便移动
  top: 0;
  left: 0;
  display: inline-block;
  height: 100%;
  width: 20px;
  transition: all 0.5s;   //添加过渡效果
  border-radius: 10px;
  background-color: red;
}
​
input[type=checkbox]:checked+label {   //重点语句
  left: 20px;
  background-color: green;
}

以上就是完全不借助JS实现自定义样式。

表现:

image.png

自定义打勾的checkbox

HTML结构:

<div class="box">
  <input type="checkbox" name="switch" id="switch">
  <label for="switch"></label>
</div>

CSS结构:

.box {
  width: 25px;
  height: 25px;
}
​
input[type=checkbox] {
  visibility: hidden;
}
​
label {
  position: relative;
  display: inline-block;
  width: 25px;
  height: 25px;
  text-align: center;
  background-color: #eeeeee;
}
​
label::after {
  content: '';
  display: inline-block;
  width: 7px;
  height: 12px;
  border-bottom: 4px solid #323232;
  border-right: 4px solid #323232;
  transform: rotate(45deg);
  opacity: 0;
}
​
input[type=checkbox]:checked+label::after {
  opacity: 1;
}

表现:

image.png