搜索

首页  >  问答  >  正文

重写后的标题为:如何在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 天前520

全部回复(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
  • 取消回复