如何使范围滑块的左侧与滑块右侧的颜色不同?

Posted

技术标签:

【中文标题】如何使范围滑块的左侧与滑块右侧的颜色不同?【英文标题】:How to make the left side of a range slider a different color than the right side of the slider? 【发布时间】:2019-05-12 20:11:21 【问题描述】:

查找有关如何根据可拖动部分的哪一侧更改滑块颜色的信息,例如 html5 视频播放器滑块的作用。

我环顾四周,没有找到任何纯 JS 解决方案,只有 JQUERY,我无法使用。有什么建议吗?

【问题讨论】:

你有没有试过制作一个函数,当它到达某个点时颜色会改变?即滑块25%为黄色,50%为红色,以此类推 我特别希望滑块的左侧为红色,右侧为灰色(例如)。 您需要隐藏输入,并有一个看起来像滑块的 div 来修改实际滑块值 这就是我所担心的。谢谢! 其实我错了。看我的回答。 【参考方案1】:

根据设计,您也可以使用纯 CSS 实现此目的:

input[type='range'] 
  -webkit-appearance: none;
  background-color: #ddd;
  height: 20px;
  overflow: hidden;
  width: 400px;


input[type='range']::-webkit-slider-runnable-track 
  -webkit-appearance: none;
  height: 20px;


input[type='range']::-webkit-slider-thumb 
  -webkit-appearance: none;
  background: #333;
  border-radius: 50%;
  box-shadow: -210px 0 0 200px #666;
  cursor: pointer;
  height: 20px;
  width: 20px;
  border: 0;


input[type='range']::-moz-range-thumb 
  background: #333;
  border-radius: 50%;
  box-shadow: -1010px 0 0 1000px #666;
  cursor: pointer;
  height: 20px;
  width: 20px;
  border: 0;


input[type="range"]::-moz-range-track 
  background-color: #ddd;

input[type="range"]::-moz-range-progress 
  background-color: #666;
  height: 20px

input[type="range"]::-ms-fill-upper 
  background-color: #ddd;

input[type="range"]::-ms-fill-lower 
  background-color: #666;
<input type="range"/>
使用这个你必须知道输入width 并且匹配滑块拇指的box-shadowwidth 更多。因为拇指周围的box-shadow 赋予了两侧不同颜色的外观。

此外,由于这在 input 上使用了 overflow: hidden,因此您将无法拥有比轨道更大的拇指。

因此,如果设计更具体,我也可以推荐 noUISlider 它不使用 jQuery

【讨论】:

这更接近我想要的,但问题是我希望拇指在滑块上延伸几个像素。溢出隐藏删除了它,这违背了目的。

以上是关于如何使范围滑块的左侧与滑块右侧的颜色不同?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中的活动图像滑块的左侧和右侧包含尖括号

更改范围滑块的颜色

具有不同分段级别的 UISlider

Jquery slider范围滑块,为两个滑块设置不同的setp值

Vuetify 滑块附加插槽文本字段未与滑块对齐

在 Qualtrics 调查中,如何使用 JavaScript 动态设置滑块的范围?