【问题标题】:EDGE Browser - customized input type="range" value is not changing on first click on slider trackEDGE 浏览器 - 自定义输入类型 =“范围”值在第一次单击滑块轨道时不会改变
【发布时间】:2019-03-06 19:56:07
【问题描述】:

我创建了一个自定义范围输入,引用 this。 它在 Chrome、IE 和 EDGE 上运行良好,但是在 EDGE 上存在一个问题。 第一次单击滑块轨道会更改拇指位置,但不会更改值。随后的点击工作正常。

请在 EDGE 中打开此 fiddle 以观察此行为。

HTML: 

<input id="sel" type="range" min="5" max="100" value="50" step="5">
<h3>Slider Value: <span id="range"></span></h3>

JS:

(function () {
  var sel = document.querySelector('#sel');
  document.querySelector('#range').innerText = sel.value;
  sel.addEventListener('change', function (){
    document.querySelector('#range').innerText = sel.value;
  });
})()

CSS:

#sel {
  width:500px;
}

input[type=range] {
 -webkit-appearance: none;
 margin: 18px 0;
 width: 100%;
}
input[type=range]:focus {
 outline: none;
} 

input[type=range]::-webkit-slider-runnable-track {
 width: 100%;
 height: 8.4px;
 cursor: pointer;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
 background: #3071a9;
 border-radius: 1.3px;
 border: 0.2px solid #010101;
}
input[type=range]::-webkit-slider-thumb {
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
 border: 1px solid #000000;
 height: 30px;
 width: 30px;
 border-radius: 100%;
 background: #ffffff;
 cursor: pointer;
 -webkit-appearance: none;
}
input[type=range]:focus::-webkit-slider-runnable-track {
 background: #367ebd;
}

input[type=range]::-ms-track {
 width: 100%;
 height: 8.4px;
 cursor: pointer;
 background: transparent;
 border-color: transparent;
 border-width: 16px 0;
 color: transparent;
}
input[type=range]::-ms-fill-lower {
 background: #2a6495;
 border: 0.2px solid #010101;
 border-radius: 2.6px;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-fill-upper {
 background: #3071a9;
 border: 0.2px solid #010101;
 border-radius: 2.6px;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 30px;
  width: 30px;
  border-radius: 100%;
  background: #ffffff;
  cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
  background: #3071a9;
}
input[type=range]:focus::-ms-fill-upper {
  background: #367ebd;
} 

感谢您的帮助。

【问题讨论】:

    标签: css html microsoft-edge


    【解决方案1】:

    从处理change 事件切换到处理input 似乎可以解决问题:

    sel.addEventListener('input', function (){
        document.querySelector('#range').innerText = sel.value;
    });
    

    https://jsfiddle.net/tz1mhys0/

    在 Chrome 中似乎仍然可以正常工作,我目前无法测试其他浏览器。如果您发现input 不起作用,我想为这两个事件添加处理程序可能也不会造成太大伤害。

    【讨论】:

    • 它适用于 Chrome、EDGE 和 Firefox,但不适用于 IE。我想我必须为两者添加处理程序。
    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 2021-04-20
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多