分享一组开关按钮

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

<!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>

猜你喜欢

转载自blog.csdn.net/qq_35241329/article/details/131343968