点击查看html编辑器说明文档

🎱CSS台球开关动画 toggleedit icon

|
|
Fork(复制)
|
|
作者:
穿越者X57

👉 新版编辑器已上线,点击进行体验吧!

BUG反馈
嵌入
设置
下载
HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ...
展开
</head>
<body>
            
            <input type="checkbox" role="switch" class="toggle" checked />
        
</body>
CSS
格式化
            
            body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  margin: 0;
  min-height: 100vh;
  font-size: 11vmin;
  background: #a74;
}

.toggle {
  appearance: none;
  position: relative;
  font-size: 1em;
  border: max(1px, 0.05em) solid;
  border-radius: 2em;
  width: 2.5em;
  aspect-ratio: 2.5;
  background: mediumseagreen;
  box-sizing: content-box;
  overflow: hidden;
  
  &::before {
    content: "";
    position: absolute;
    top: 50%;
    left: -0.5em;
    width: 0.7em;
    height: 0.7em;
    background: 
      radial-gradient(30% 37% at 25% 45%, #0000 0.05em, #000 0 0.07em, #0000 0),
      radial-gradient(30% 40% at 25% 55%, #0000 0.05em, #000 0 0.07em, #0000 0),
      radial-gradient(circle at 25% 50%, #fff 0.15em, #0000 0),
      #000;
    background-size: 1.4em 0.7em;
    background-position: 0 0;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    border: 1px solid #000;
    box-shadow: inset 0.1em 0 0.1em #0008, inset -0.1em 0 0.1em #0008;
    transition: 
      background-position 0.5s linear 0.1s, 
      left 0.5s linear 0.1s;
  }
  
  &::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 0.5em;
    width: 0.7em;
    height: 0.7em;
    background: #eee;
    background-size: 1.4em 0.7em;
    background-position: 0 0;
    border-radius: 50%;
    transform: translate(-50%, -50%) rotate(0);
    border: 1px solid #fff;
    box-shadow: 
      inset 0 0 0.1em #fff,
      inset 0.1em 0 0.1em #fff,
      inset -0.1em 0 0.1em #0001;
    transition: 
      left 0.75s linear 0s,
      transform 0.75s linear 0s;
  }
  
  &:checked {
    &::before {
      left: 2em;
      background-position: 1.4em 0;
      transition-delay: 0s;
      transition: 
        background-position 0.75s linear 0s, 
        left 0.75s linear 0s;
    }
    &::after {
      left: 3em;
      transform: translate(-50%, -50%) rotate(720deg);
      transition-delay: 0.375s;
      transition: 
        left 0.5s linear 0.1s,
        transform 0.5s linear 0.1s;
    }
  }
  
  &[disabled] {
    opacity: 0.25;
  }
}

@media print {
  .toggle {
    &, &::before, &::after {
      -webkit-print-color-adjust: exact;
      print-color-adjust: exact;
    }
  }
}

@media (prefers-reduced-motion) {
  .toggle {
    &, &::before, &::after {
      transition: none !important;
      animation: none !important;
    }
  }
}
        
JS
格式化
            
            
        
预览
控制台