.slider::-webkit-slider-thumb在javascript中需要

c3frrgcw  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(235)

我想做一个滑块,当值改变时改变点的大小。所以值1将是10 px的大小,值100将是100 px的大小。
如何使用javascript更改.slider::-webkit-slider-thumb的高度?

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;

slider.oninput = function() {
  output.innerHTML = this.value;
}
.slidecontainer {
  width: 100%;
}

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

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #4CAF50;
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #4CAF50;
  cursor: pointer;
}
<h1>Round Range Slider</h1>

<div class="" "slidecontainer">
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
  <p>Value: <span id="demo"></span></p>
</div>

我试过的=

document.getElementById("myRange").style.webkitTransform = "height: 100px";
bis0qfac

bis0qfac1#

在回答问题之前
::-webkit-slider-thumb是一个伪元素。这些元素不是DOM的一部分。因此,在JavaScript中更改它们可能会有点麻烦。
一个合适的解决方案是用另一个元素完全替换拇指。
现在来回答这个问题:您可以在滑块值更改时将样式注入到具有给定属性的<style>元素中。
所以你会加上

<style data="test" type="text/css"></style>

添加到你的header中,然后定位元素并像这样添加CSS:

var style = document.querySelector('[data="test"]');
style.innerHTML = ".class { property: value; }";

这与您提供的at this link代码相结合将是您问题的解决方案。

演示

一个一个二个一个一个一个三个一个一个一个一个一个四个一个
还有:你说
因此,值1的大小为10px,值100的大小为100px。
如果您想要一种方法,例如值1到10等于10px,并且值10以上的所有内容都是以像素为单位的实际值,则可以更改行

style.innerHTML = "...";

style.innerHTML = ".slider::-webkit-slider-thumb { width: " + (x < 10 ? 10 : x)  + "px !important; height: " + (x < 10 ? 10 : x) + "px !important; }";

此版本的现场演示可以在**HERE**中找到

u0sqgete

u0sqgete2#

2023 -使用CSS变量

接受的答案工作,但它的代码很多,很难理解。这可以做得容易得多,这些天...
在CSS中添加一个像这样的变量--sliderSize

.slider {
  --sliderSize: 25px; /* <---- Add this */
  -webkit-appearance: none;
  width: 100%;
  height: 15px;
  border-radius: 5px;
  background: #d3d3d3;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: var(--sliderSize); /* <---- Set the variable here */
  height: var(--sliderSize); /* <--- and here */
  border-radius: 50%;
  background: #4CAF50;
  cursor: pointer;
}

然后在JavaScript中,使用setProperty将变量设置为任何你想要的值:

const newSliderSize = '100px'; // this could be a passed in dynamic value, etc.
document.getElementById("myRange").style.setProperty('--sliderSize', newSliderSize);

下面是一个简单的例子:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个

相关问题