HTML5滑条的拇指无法覆盖曲目

时间:2017-02-08 07:28:07

标签: html css html5 slider pseudo-element

我制作了一个带有html5&的滑块。 css,像这样。



function showValue(value) {
  document.getElementById("range").innerHTML = value;
}

.c-zoombar {
  -webkit-appearance: none;
  background: none;
  outline: none;
  overflow: hidden;
  width: 200px;
  height: 20px;
}
.c-zoombar::-webkit-slider-thumb {
  -webkit-appearance: none;
  background: #5e6fd9;
  border: 1px solid #fff;
  border-radius: 50%;
  height: 12px;
  position: relative;
  top: -5.5px;
  transition: .2s;
  width: 12px;
}
.c-zoombar::-webkit-slider-runnable-track {
  background: transparent;
  border: 1px solid #000;
  border-radius: 2px;
  cursor: pointer;
  height: 3px;
  width: 100%;
}
.c-zoombar:active::-webkit-slider-thumb {
  height: 16px;
  top: -8px;
  width: 16px;
}
.c-zoombar::-webkit-slider-thumb:hover {
  height: 16px;
  top: -8px;
  width: 16px;
}

<div>
  <input type="range" value="0" class="c-zoombar" onInput="showValue(this.value)" />
</div>
<div>
  <span id="range">0</span>
</div>
&#13;
&#13;
&#13;

但是,当我将拇指向最右/右滚动时,拇指无法完全覆盖轨道,如下图所示。 enter image description here

当滚动到最右边/左边时,我应该修改什么才能使拇指能够覆盖轨道?谢谢。

1 个答案:

答案 0 :(得分:1)

我发现transform: scale()可以做出技巧的一部分(比例也可以更平滑地转换为宽度/高度)。是12px大小是强制性的吗?

function showValue(value) {
  document.getElementById("range").innerHTML = value;
}
.c-zoombar {
  -webkit-appearance: none;
  background: none;
  outline: none;
  overflow: visible;
  width: 200px;
  height: 20px;
}
.c-zoombar::-webkit-slider-thumb {
  -webkit-appearance: none;
  background: #5e6fd9;
  border: 1px solid #fff;
  border-radius: 50%;
  height: 12px;
  position: relative;
  top: -5.5px;
  transition: .2s;
  width: 12px;
  transform: scale(1.33);
}
.c-zoombar::-webkit-slider-runnable-track {
  background: transparent;
  border: 1px solid #000;
  border-radius: 2px;
  cursor: pointer;
  height: 3px;
  width: 100%;

}
.c-zoombar:active::-webkit-slider-thumb,
.c-zoombar::-webkit-slider-thumb:hover {
  transform: scale(1.66);
}
<div class='wrap'>
  <input type="range" value="0" class="c-zoombar" onInput="showValue(this.value)" />
</div>
<div>
  <span id="range">0</span>
</div>