【问题标题】:How to rotate input type range thumb in javascript?如何在javascript中旋转输入类型范围拇指?
【发布时间】:2018-07-14 16:53:10
【问题描述】:

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

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

有人可以帮我吗?

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>

【问题讨论】:

    标签: javascript html css css-transforms


    【解决方案1】:

    由于您无法使用 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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多