【问题标题】:YouTube AutoPlay Toggle Switch in HTML/CSS?HTML/CSS 中的 YouTube 自动播放切换开关?
【发布时间】:2021-09-25 21:39:34
【问题描述】:

有谁知道如何制作一个像 YouTube 自动播放一样的拨动开关,在旋钮的开/关状态上有“播放”和“暂停”图标?

我有以下常规开关,但不确定如何动态更改旋钮背景?

.label {
  position: relative;
  width: 90px;
  height: 36px;
}

input {
  transform: scale(0);
}

.background {
  position: absolute;
  left: 0;
  height: 100%;
  width: 100%;
  border-radius: 20px;
  background: #6b6d6f;
  transition: background 0.4s;
}

.knob {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #f7f7f7;
  transition: transform 0.4s;
}

input:checked + .background {
  background: blue;
}

input:checked + .background .knob {
  transform: translateX(52px);
}
<label class="label">
  <input type="checkbox" />
  <span class="background">
    <span class="knob"></span>
  </span>
</label>

【问题讨论】:

    标签: html css sass switch-statement


    【解决方案1】:

    试试这个:

    .label {
      position: relative;
      width: 2em;
      height: 1em;
      display: inline-block;
    }
    
    input {
      display: none;
    }
    
    .background {
      position: absolute;
      left: 0;
      height: 100%;
      width: 100%;
      background: transparent;
      transition: background 0.4s;
    }
    
    .background:before
    {
      content: "";
      height: 75%;
      width: 100%;
      background-color: #6b6d6f;
      position: absolute;
      top: 16%;
      border-radius: 1em;
      z-index: 0;
    }
    .knob {
      position: absolute;
      top: 0;
      left: 0.1em;
      width: 1em;
      height: 1em;
      background: #d7d7d7;
      transition: left 0.4s;
      display: flex;
      border-radius: 1em;
      border: 0.5px solid rgba(0, 0, 0, 0.1);
    }
    
    .knob:after
    {
      content: "";
      display: block;
      margin: auto;
      box-sizing: border-box;
      height: 0.4em;
      width: 0.4em;
      border-color: transparent transparent transparent black;
      border-style: double;
      border-width: 0 0 0 0.4em;
    }
    
    input:checked + .background .knob {
      background: #f7f7f7;
    }
    
    input:checked + .background .knob:after {
      border-style: solid;
      border-width: 0.25em 0px 0.25em 0.4em;
    }
    
    input:checked + .background .knob {
      left: 0.75em;
    }
    <label class="label">
      <input type="checkbox" />
      <span class="background">
        <span class="knob"></span>
      </span>
    </label>

    【讨论】:

      【解决方案2】:

      看看这个

      var play = document.getElementById('play');
      var pause = document.getElementById('pause');
      var hello= document.querySelector(".background");
      var input = document.getElementById("toggle");
      var n = 0;
      // pause.style.display  ="none"
      hello.addEventListener("click",()=>{
       if(n === 0){
      pause.style.display  ="none";
      play.style.display  ="block";
      n = 1;
       }else{
           pause.style.display  ="block";
           play.style.display = "none";
           n = 0;
       }
      })
      .label {
        position: relative;
        width: 90px;
        height: 36px;
      }
      
      input {
        transform: scale(0);
      }
      
      .background {
        position: absolute;
        left: 30;
        height: 150%;
        width: 460%;
        /* margin-top: 500px; */
        border-radius: 20px;
        background: #6b6d6f;
        transition: background 0.4s;
      }
      
      .knob {
        position: absolute;
        top: -3px;
        left: 5px;
        width: 32px;
        height: 32px;
        border-radius: 50%;
        background: #f7f7f7;
        transition: transform 0.4s;
      }
      
      input:checked + .background {
        background: cadetblue;
      }
      
      input:checked + .background .knob {
        transform: translateX(52px);
      }
      <label class="label">
        <input id="toggle"  type="checkbox" onclick=""/>
        <span class="background">
          <!-- <span class="knob"></span> -->
      <svg class="knob" id="play" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-circle" viewBox="0 0 16 16">
        <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
        <path d="M6.271 5.055a.5.5 0 0 1 .52.038l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445z"/>
      </svg>
      
      
      <svg class="knob" id="pause" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-circle" viewBox="0 0 16 16">
        <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
        <path d="M5 6.25a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5zm3.5 0a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5z"/>
      </svg>
      
      
        </span>
      </label>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2020-03-21
        • 2017-07-30
        • 1970-01-01
        相关资源
        最近更新 更多