我想做一个滑块,当值改变时改变点的大小。所以值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";
2条答案
按热度按时间bis0qfac1#
在回答问题之前
::-webkit-slider-thumb
是一个伪元素。这些元素不是DOM的一部分。因此,在JavaScript中更改它们可能会有点麻烦。一个合适的解决方案是用另一个元素完全替换拇指。
现在来回答这个问题:您可以在滑块值更改时将样式注入到具有给定属性的
<style>
元素中。所以你会加上
添加到你的header中,然后定位元素并像这样添加CSS:
这与您提供的at this link代码相结合将是您问题的解决方案。
演示:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
还有:你说
因此,值1的大小为10px,值100的大小为100px。
如果您想要一种方法,例如值1到10等于10px,并且值10以上的所有内容都是以像素为单位的实际值,则可以更改行
到
此版本的现场演示可以在**HERE**中找到
u0sqgete2#
2023 -使用CSS变量
接受的答案工作,但它的代码很多,很难理解。这可以做得容易得多,这些天...
在CSS中添加一个像这样的变量
--sliderSize
:然后在JavaScript中,使用
setProperty
将变量设置为任何你想要的值:下面是一个简单的例子:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个