搜尋

首頁  >  問答  >  主體

重寫後的標題為:如何在HTML中製作一個帶有漸變背景的自動填入滑桿

我只是在玩 HTML,我想製作一個用漸層填滿自身的滑桿,但我發現這幾乎是不可能的。我已經研究了幾個小時,但似乎找不到答案。

我認為我需要 JS,但我在那裡完全空白。

.slidecontainer {
  justify-content: center;
  bottom: 0px;
  margin-left: auto;
}

.slider {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 5px;
  width: 100%;
  height: 25px;
  background: #d3d3d3;
  outline: none;
  opacity: 0.8;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 5px;
  width: 25px;
  height: 25px;
  background: blue;
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  background: blue;
  cursor: pointer;
}
<div class="slidecontainer">
  <input type="range" min="1" max="100" value="1" class="slider" id="myRange">
</div>

我已經嘗試了上面所說的方法。我一直在嘗試這個網站上的東西(https://codepen.io/kaiquenunes23/pen/LYEvegK),但我無法控制它。

我還在 StackOverflow 上閱讀了多個其他線程。

P粉715228019P粉715228019345 天前522

全部回覆(2)我來回復

  • P粉541565322

    P粉5415653222024-02-04 17:47:09

    試試這個

    回覆
    0
  • P粉541796322

    P粉5417963222024-02-04 09:45:27

    需要JS來取得大拇指的目前位置。

    此程式碼片段透過讀取滑桿上的位置並計算其移動的百分比來實現此目的。然後它將 CSS 變數 --pc 設定為該百分比值。

    滑桿有兩個背景圖像,第一個是拇指透明的背景圖像,然後是您想要的灰色。 「在它下面」是第二個背景圖像,它是您想要的任何線性漸變。

    這樣,當您將滑桿向右移動時,線性漸變就會顯示出來。

    const slider = document.getElementById("myRange");
    slider.addEventListener("input", update);
    
    function update() {
      const pc = (slider.value - slider.min) / (slider.max - slider.min) * 100 + '%';
      slider.style.setProperty('--pc', pc);
    }
    .slidecontainer {
      justify-content: center;
      bottom: 0px;
      margin-left: auto;
    }
    
    .slider {
      -webkit-appearance: none;
      appearance: none;
      border-radius: 5px;
      width: 100%;
      height: 25px;
      --pc: 0;
      background: linear-gradient(to right, transparent 0 var(--pc), #d3d3d3 var(--pc) 100%), linear-gradient(to right, red, green);
      outline: none;
      opacity: 0.8;
      -webkit-transition: .2s;
      transition: opacity .2s;
    }
    
    .slider:hover {
      opacity: 1;
    }
    
    .slider::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      border-radius: 5px;
      width: 25px;
      height: 25px;
      background: blue;
      cursor: pointer;
    }
    
    .slider::-moz-range-thumb {
      width: 25px;
      height: 25px;
      background: blue;
      cursor: pointer;
    }

    回覆
    0
  • 取消回覆