CheckBox实现

277 阅读2分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

前言

大家好,我是小阵 🔥,一路奔波不停的码字业务员
如果喜欢我的文章,可以关注 ➕ 点赞,与我一同成长吧~😋
加我微信:zzz886885,邀你进群,一起学习交流,摸鱼学习两不误🌟

开开心心学技术大法~~

开心

来了来了,他真的来了~

正文

实现思路

  • 可以通过js的dom.classList.toggle与div互相配合实现

  • 当然也可以使用inputtype="radio"type="checkbox"来实现

    • 借助了单选或多选的伪类选择器:checked来区分开选中与非选中的样式
  • 但是单纯通过input来改样式委实还是有点不伦不类了,可以通过inputidlabelfor结合使用

  • 将input通过visibility:hidden隐藏起来,然后单独更改label样式,label内部也可以嵌套其他dom来配合实现check按钮中的小白圆

  • 然后就是选中与非选中状态的小白圆的动画,用一个animation搞定

  • 剩下的就没什么关键的了

具体实现

html基础

<body>
    <h2>How do you want your project to be?</h2>
    <div class="toggle-container">
      <input type="checkbox" id="good" class="toggle">
      <label for="good" class="label">
        <div class="ball"></div>
      </label>
      <span>Good</span>
    </div>
​
    <div class="toggle-container">
      <input type="checkbox" id="cheap" class="toggle">
      <label for="cheap" class="label">
        <div class="ball"></div>
      </label>
      <span>Cheap</span>
    </div>
​
    <div class="toggle-container">
      <input type="checkbox" id="fast" class="toggle">
      <label for="fast" class="label">
        <div class="ball"></div>
      </label>
      <span>Fast</span>
    </div>
  </body>

关键css

.toggle:checked + .label {
  background-color: #8e44ad;
}
​
.ball {
  background: #fff;
  height: 34px;
  width: 34px;
  border-radius: 50%;
  position: absolute;
  top: 3px;
  left: 3px;
  align-items: center;
  justify-content: center;
  animation: slideOff 0.3s linear forwards;
}
​
.toggle:checked + .label .ball {
  animation: slideOn 0.3s linear forwards;
}
​
@keyframes slideOn {
  0% {
    transform: translateX(0) scale(1);
  }
  50% {
    transform: translateX(20px) scale(1.2);
  }
  100% {
    transform: translateX(40px) scale(1);
  }
}
​
@keyframes slideOff {
  0% {
    transform: translateX(40px) scale(1);
  }
  50% {
    transform: translateX(20px) scale(1.2);
  }
  100% {
    transform: translateX(0) scale(1);
  }
}

关键是伪类选择器的:checked的使用

完整代码

总结

  • 可以通过js来实现,也可以通过css来实现,当然,如果要实现更复杂的功能,势必要借助js的
  • js实现可以通过dom.classList.toggle来快捷实现,也可以手动判断classList是否含有激活class来实现toggle效果
  • css可以通过inputtypecheckedcheckbox的伪类选择器:checked来实现激活与非激活状态

结语

如果文章真的有帮到你,希望可以多多点赞、收藏、关注支持一波呀!!小阵会很开心哒~

热爱开源,支持开源,拥抱开源!

文章如有错误或不严谨之处,还望指出,感谢感谢!!!

加油!

往期好文推荐