IE和Edge中的范围滑块拇指css问题

Posted

技术标签:

【中文标题】IE和Edge中的范围滑块拇指css问题【英文标题】:range slider thumb css issue in IE and Edge 【发布时间】:2018-08-12 21:40:31 【问题描述】:

我正在为我的网站创建一个范围滑块,它需要在所有浏览器上看起来都一样。我现在在 IE 和 Edge 中遇到滑块拇指大小的问题。我无法比滑块轨道增加拇指的高度

Chrome 和 Firefox:

IE 和边缘:

代码:

<input type="range" min="1" max="100" step="1" value="15">

CSS:

input[type="range"]
    -webkit-appearance: none;
    -moz-apperance: none;
     outline:none !important;
    border-radius: 6px;
    height: 8px;
    width:100%;
    background-image: -webkit-gradient(
        linear,
        left top,
        right top,
        color-stop(0.15, orange),
        color-stop(0.15, #C5C5C5)
    );


input[type='range']::-webkit-slider-thumb 
    -webkit-appearance: none !important;
    cursor:pointer;

    background-color: orange;
    border: 1px solid orange;
    height: 20px;
    width: 20px;
    border-radius:50%;
    transition:100ms;





input[type='range']:hover::-webkit-slider-thumb 
    -webkit-appearance: none !important;
    cursor:pointer;

    background-color: orange;
    border: 1px solid orange;
    height: 25px;
    width: 25px;
    border-radius:50%;




/*Firefox */

  input[type="range"]::-moz-range-thumb 

  background-color: orange;
    border: 1px solid orange;
    height: 20px;
    width: 20px;
    border-radius:50%;
    cursor:pointer;
  

  input[type="range"]:hover::-moz-range-thumb 

  background-color: orange;
    border: 1px solid orange;
    height: 25px;
    width: 25px;
    border-radius:50%;
    cursor:pointer;
  


input[type=range]::-moz-range-track 
  background:none;




/*IE and Edge */

input[type=range]::-ms-thumb

  background-color: orange;
    border: 1px solid orange;
    height: 20px;
    width: 20px;
    border-radius:50%;
    cursor: hand;
  


input[type=range]::-ms-fill-upper 
    background-color: #C5C5C5;

  

input[type=range]::-ms-fill-lower 
   background-color: orange;

  

  input[type=range]::-ms-track 

border:none;
color:transparent;
height:8px;


input[type="range"]::-ms-tooltip 
    display: none; /*tooltip makes thumb sliding lagy*/

jquery:

$('input[type="range"]').on('input change',function()

    var val = ($(this).val() - $(this).attr('min')) / ($(this).attr('max') - $(this).attr('min'));

    $(this).css('background-image',
                '-webkit-gradient(linear, left top, right top, '
                + 'color-stop(' + val + ', orange), '
                + 'color-stop(' + val + ', #C5C5C5)'
                + ')'
                );
);

浏览链接http://brennaobrien.com/blog/2014/05/style-input-type-range-in-every-browser.html后发现IE不会让拇指溢出轨道。但是其中提到了一种解决方法。 调整input[type="range"] 高度后,我可以进行更改。但这会改变 chrome 和 firefox 中的格式。

有没有办法解决。

小提琴: https://jsfiddle.net/anoopcr/ssbx0anj/55/

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

下面的代码显示了一个也可以在 Edge 上运行的跨浏览器滑块:

.wrap 
  float: left;
  position: relative;
  margin: 0 0.5em 0.5em;
  padding: 0.5em;
  height: 12.5em;
  width: 1.5em;

[type='range'] 
  position: absolute;
  top: 50%;
  left: 50%;
  margin: 0;
  padding: 0;
  width: 12.5em;
  height: 1.5em;
  transform: translate(-50%, -50%) rotate(-90deg);
  background: transparent;
  font: 1em arial, sans-serif;

[type='range'], [type='range']::-webkit-slider-thumb 
  -webkit-appearance: none;

[type='range']::-webkit-slider-runnable-track 
  box-sizing: border-box;
  border: none;
  width: 12.5em;
  height: 0.25em;
  background: #ccc;

[type='range']::-moz-range-track 
  box-sizing: border-box;
  border: none;
  width: 12.5em;
  height: 0.25em;
  background: #ccc;

[type='range']::-ms-track 
  box-sizing: border-box;
  border: none;
  width: 12.5em;
  height: 0.25em;
  background: #ccc;

[type='range']::-webkit-slider-thumb 
  margin-top: -0.625em;
  box-sizing: border-box;
  border: none;
  width: 1.5em;
  height: 1.5em;
  border-radius: 50%;
  background: #f90;

[type='range']::-moz-range-thumb 
  box-sizing: border-box;
  border: none;
  width: 1.5em;
  height: 1.5em;
  border-radius: 50%;
  background: #f90;

[type='range']::-ms-thumb 
  margin-top: 0;
  box-sizing: border-box;
  border: none;
  width: 1.5em;
  height: 1.5em;
  border-radius: 50%;
  background: #f90;
<div class='wrap'>
	<input type='range' value="5" min="0" max="10"/>
</div>

原始代码笔归功于 Ana Tudor:

[Codepen](https://codepen.io/thebabydino/pen/WdeYMd)

【讨论】:

欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted. 我编辑了帖子以保留原始代码和链接,因为我指的是其他人的工作。

以上是关于IE和Edge中的范围滑块拇指css问题的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中,如何在范围滑块的拇指上创建一个气泡头

Flutter - 范围滑块

如何找到滑块的拇指来设置其宽度

如何让滑块的拇指一直移动到最后?

将自定义标签添加到材料范围滑块

移动范围拇指时动画范围刻度