gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:10 24 4
gpt4 key购买 nike

我想制作一个 slider ,当值改变时改变点的大小。因此值 1 的大小为 10px,值 100 的大小为 100px。

如何使用 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";

最佳答案

好的,所以,在回答问题之前:

::-webkit-slider-thumb是一个伪元素。这些元素不是 DOM 的一部分.因此,在 JavaScript 中更改它们可能会有点麻烦。

一个合适的解决方案是用另一个元素完全替换拇指。


现在回答这个问题:您可以将样式注入(inject) <style> slider 值更改时具有给定属性的元素。

所以你会添加

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

到您的 header ,然后定位该元素并像这样向其添加 CSS:

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

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


演示:

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
var style = document.querySelector('[data="test"]');

setData(slider.value);

slider.oninput = function() {
setData(this.value);
}

function setData(x){
output.innerHTML = x;
style.innerHTML = ".slider::-webkit-slider-thumb { width: " + x + "px !important; height: " + x + "px !important; }";
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
border-radius: 50%;
background: #4CAF50;
cursor: pointer;
}
.slider {
margin-top: 40px;
-webkit-appearance: none;
width: 100%;
height: 15px;
border-radius: 5px;
background: #d3d3d3;
outline: none;
}
<style data="test" type="text/css"></style>

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


还有:你说

So value 1 will be a size of 10px and value 100 will be size 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

关于javascript - .slider::-webkit-slider-thumb 在 javascript 中需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48297265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com