javascript - 如何在 javascript 中旋转输入类型范围拇指?

标签 javascript html css css-transforms

我有一个 <input type="range">并想旋转拇指 - 但只有输入时的拇指。

我的问题是:当我尝试旋转它时,它会旋转整个 slider 。

有人可以帮助我吗?

function slide(event){
  event.target.style.webkitTransform = 'rotate(20deg)';
}
        .slidecontainer {
            width: 100%;
        }
        .slider {
            -webkit-appearance: none;
            appearance: none;
            width: 100%;
            height: 20px;
            background: #d3d3d3;
            outline: none;
            opacity: 0.7;
            -webkit-transition: .2s;
            transition: opacity .2s;
            border-radius: 20px;
        }
        .slider:hover {
            opacity: 1;
        }
        .slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 50px;
            height: 50px;
            border-radius: 50px;
            background: grey;
            background-image: url(img/thumb.png);
            background-size: 35px 35px;
            background-position: center;
            background-repeat: no-repeat;
            cursor: pointer;
        }
        .slider::-moz-range-thumb {
            width: 50px;
            height: 50px;
            border-radius: 50px;
            background: grey;
            background-image: url(img/thumb.png);
            background-size: 35px 35px;
            background-position: center;
            background-repeat: no-repeat;
            cursor: pointer;
        }
<div class="slidecontainer">
  <input type="range" min="100" max="500" value="300" class="slider" oninput="slide(event)">
</div>

最佳答案

由于无法使用 JS 定位伪元素,请考虑使用 CSS 变量。您在输入元素中定义它们,它们由拇指继承;因此,您可以轻松实现您想要的。

function slide(event) {
  event.target.style.setProperty('--r',event.target.value+'deg');
}
.slidecontainer {
  width: 100%;
}

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

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  background:linear-gradient(red 50%,blue 0);
  cursor: pointer;
  display:inline-block;
  transform:rotate(var(--r,180deg));
}

.slider::-moz-range-thumb {
  width: 50px;
  height: 50px;
  border-radius: 50px;
  background: linear-gradient(red 50%,blue 0);
  cursor: pointer;
  display:inline-block;
  transform:rotate(var(--r,180deg));
}
<div class="slidecontainer">
  <input type="range" min="0" max="360" value="180" class="slider" oninput="slide(event)">
</div>

关于javascript - 如何在 javascript 中旋转输入类型范围拇指?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49942898/

相关文章:

javascript - 如何获取进度条div元素的点击位置

javascript - 构建和部署 typescript/node.js 应用程序的明智方法

javascript - 来自 Node.js 的 Javascript 中的 getToken 的 invalid_request

html - 在 div 中打开 pdf

html - 带下拉菜单的 CSS 中带下划线的菜单

javascript - 计算样式未以图形方式显示

javascript - 将 localStorage 值加一

css - 带有 css 翻转的 HTML map ?

html - 在菜单中为 Sass 应用最后一个子选择器

html - Bootstrap 字体在移动设备上缩放太小