分享一组开关按钮

先看效果:
在这里插入图片描述
再看代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>豆子开关</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      -webkit-tap-highlight-color: transparent;
      outline: 1px solid transparent;
    }

    body {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      gap: 8px;
      min-height: 100vh;
      font-size: 2em;
    }

    .toggle-wrapper {
      display: inline-block;
      position: relative;
      border-radius: 3.125em;
      overflow: hidden;
    }

    .toggle-checkbox {
      -webkit-appearance: none;
      appearance: none;
      position: absolute;
      z-index: 1;
      top: 0;
      left: 0;
      border-radius: inherit;
      width: 100%;
      height: 100%;
      cursor: pointer;
    }

    .toggle-container {
      display: flex;
      position: relative;
      border-radius: inherit;
      width: 2.5em;
      height: 1.25em;
      background-color: #d1d4dc;
      box-shadow: inset 0.0625em 0 0 #d4d2de, inset -0.0625em 0 0 #d4d2de, inset 0.125em 0.25em 0.125em 0.25em #b5b5c3;
      mask-image: radial-gradient(#fff, #000);
      transition: all 0.4s;
    }
    .toggle-wrapper.red > .toggle-checkbox:checked + .toggle-container {
      background-color: #f5233c;
      box-shadow: inset 0.0625em 0 0 #f5233c, inset -0.0625em 0 0 #f5233c, inset 0.125em 0.25em 0.125em 0.25em #d70026;
    }
    .toggle-wrapper.yellow > .toggle-checkbox:checked + .toggle-container {
      background-color: #fbc433;
      box-shadow: inset 0.0625em 0 0 #fbc433, inset -0.0625em 0 0 #fbc433, inset 0.125em 0.25em 0.125em 0.25em #ee9902;
    }
    .toggle-wrapper.blue > .toggle-checkbox:checked + .toggle-container {
      background-color: #4588ff;
      box-shadow: inset 0.0625em 0 0 #4588ff, inset -0.0625em 0 0 #4588ff, inset 0.125em 0.25em 0.125em 0.25em #3952f3;
    }

    .toggle-ball {
      position: relative;
      border-radius: 50%;
      width: 1.25em;
      height: 1.25em;
      background-image: radial-gradient(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 16%), radial-gradient(#d2d4dc, #babac2);
      background-position: -0.25em -0.25em;
      background-size: auto, calc(100% + .25em) calc(100% + .25em);
      background-repeat: no-repeat;
      box-shadow: 0.25em 0.25em 0.25em #8d889e, inset 0.0625em 0.0625em 0.25em #d1d1d6, inset -0.0625em -0.0625em 0.25em #8c869e;
      transition: transform 0.4s, box-shadow 0.4s;
    }
    .toggle-ball::after {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      border-radius: 50%;
      width: 100%;
      height: 100%;
      background-position: -0.25em -0.25em;
      background-size: auto, calc(100% + .25em) calc(100% + .25em);
      background-repeat: no-repeat;
      opacity: 0;
      transition: opacity 0.4s;
    }
    .toggle-wrapper.red > .toggle-container > .toggle-ball::after {
      background-image: radial-gradient(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 16%), radial-gradient(#ff2751, #e0022f);
      box-shadow: 0.25em 0.25em 0.25em #b70033, inset 0.0625em 0.0625em 0.25em #fe7d7e, inset -0.0625em -0.0625em 0.25em #870002;
    }
    .toggle-wrapper.yellow > .toggle-container > .toggle-ball::after {
      background-image: radial-gradient(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 16%), radial-gradient(#f5d05f, #d67f1b);
      box-shadow: 0.25em 0.25em 0.25em #bc6d00, inset 0.0625em 0.0625em 0.25em #fff27a, inset -0.0625em -0.0625em 0.25em #9f3901;
    }
    .toggle-wrapper.blue > .toggle-container > .toggle-ball::after {
      background-image: radial-gradient(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 16%), radial-gradient(#419efe, #4ba2ff);
      box-shadow: 0.25em 0.25em 0.25em #2634d0, inset 0.0625em 0.0625em 0.25em #8dd5ff, inset -0.0625em -0.0625em 0.25em #1500ac;
    }
    .toggle-wrapper > .toggle-checkbox:checked + .toggle-container > .toggle-ball::after {
      opacity: 1;
    }
    .toggle-checkbox:checked + .toggle-container > .toggle-ball {
      transform: translateX(100%);
    }
  </style>
</head>
<body>
<div class="toggle-wrapper red">
  <input class="toggle-checkbox" type="checkbox">
  <div class="toggle-container">
    <div class="toggle-ball"></div>
  </div>
</div>

<div class="toggle-wrapper yellow">
  <input class="toggle-checkbox" type="checkbox">
  <div class="toggle-container">
    <div class="toggle-ball"></div>
  </div>
</div>

<div class="toggle-wrapper blue">
  <input class="toggle-checkbox" type="checkbox">
  <div class="toggle-container">
    <div class="toggle-ball"></div>
  </div>
</div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timi先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值