HTML5输入类型具有最小值滑块,最大值滑块和刻度的范围

时间:2017-02-22 11:02:00

标签: javascript jquery html5 css3

我必须实现HTML5输入类型Range

<input type="range"  min="0" max="100" step="10"  value="40" />

现在我想在步骤上显示滴答,就像附加图像一样。可能吗 ?有什么办法吗?

Sample Image

5 个答案:

答案 0 :(得分:3)

使用HTML5实现此功能输入类型Range是不可能的,因为它只接受一个输入

  

您可以使用JQUERY滑块检查此

来实现此目的

&#13;
&#13;
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>slider</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    $( "#slider-range" ).slider({
      range: true,
      min: 0,
      max: 500,
      values: [ 75, 300 ],
      slide: function( event, ui ) {
        $( "#amount" ).val( "₹" + ui.values[ 0 ] + " - ₹" + ui.values[ 1 ] );
      }
    });
    $( "#amount" ).val( "₹" + $( "#slider-range" ).slider( "values", 0 ) +
      " - ₹" + $( "#slider-range" ).slider( "values", 1 ) );
  } );
  </script>
</head>
<body>
 
<p>
  <label for="amount">Price range:</label>
  <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>
 
<div id="slider-range"></div>
 
 
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

我已经让你simple example,它会告诉你如何得到你想要的东西。

此代码将为您生成刻度,您可以相应地更改刻度线及其样式。您应该自动生成HTML。

&#13;
&#13;
.rangeWrap {
  width: 40%;
}
.rangeWrap input {
  width: 100%;
  margin: 0;
}
.rangeWrap .ticks {
  display: flex;
  justify-content: space-between;
  height: 6px;
  margin: -1.5em 5px 0 6px;
  font: 10px Arial;
  counter-reset: count -1;
}
.rangeWrap .ticks > div {
  height: 100%;
  width: 1px;
  background: silver;
  counter-increment: count 1;
}
.rangeWrap .ticks > div:nth-child(5n - 4) {
  height: 200%;
}
.rangeWrap .ticks > div:nth-child(5n - 4)::before {
  display: block;
  content: counter(count,decimal);
  transform: translate(-50%, 100%);
  text-align: center;
  width: 16px;
}
&#13;
  <div class='rangeWrap'>
    <input type="range"  min="0" max="100" step="10"  value="40" />
    <div class='ticks'>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

见Woodrow Barlow的回答here。我将在这里总结一下:

当您提供步骤属性时,Internet Explorer(所有内容)支持此功能,如您的问题所示:

<input type="range"  min="0" max="100" step="10"  value="40" />

对于其他浏览器,需要各种解决方法,可能会产生副作用。在Chrome和Safari中,您可以使用数据列表来提供以下步骤:

<input type="range" min="0" max="100" step="25" list="steplist">
<datalist id="steplist">
    <option>0</option>
    <option>25</option>
    <option>50</option>
    <option>75</option>
    <option>100</option>
</datalist>

在Firefox中,解决方案更加精细,包括自定义css - see this jsFiddle

答案 3 :(得分:1)

我发现完全你所追求的是什么:

https://github.com/IonDen/ion.rangeSlider

enter image description here

答案 4 :(得分:0)

本地执行此操作/ polyfilled:

  • 对于刻度线:Woodrow Barlow的answer(@ Lagostra在这个问题上的总结)是本机解决方案,但它目前还不是很容易定制的

  • 对于双滑块:[type="range"]规范包含multiple属性,应该完全按照这个...但在撰写本文时,没有浏览器支持它。 http://leaverou.github.io/multirange/ polyfill适用于所有支持CSS变量的浏览器。