【问题标题】:How to reverse the direction in HTML5 range input?如何在 HTML5 范围输入中反转方向?
【发布时间】:2021-09-06 20:23:56
【问题描述】:

要在 HTML5 中有一个滑动条,我们可以使用范围输入。即

<input type="range" min="0" max='5' value="0" step="1" >

默认行为是左侧有最小值,右侧有最大值。有没有办法可以将最大值放在左侧?

我知道我可以用 Javascript 做到这一点。有没有办法单独使用 HTML 来做到这一点?


回复“可能重复的问题”:

该问题接受 javascript 解决方案,我要求仅提供 HTML 解决方案。我觉得很明显不是重复?

【问题讨论】:

标签: html


【解决方案1】:

这可能会奏效:在 CSS 上将输入的方向设置为从右到左

#reversedRange {
  direction: rtl
}

参见下面的示例代码

PS javascript/jquery 代码只是为了说明值的变化,它不是必需的。只有 CSS 和 input 元素上的 id 属性

更新:基于 @MCTaylor17 的 cmets(感谢)

$(function() {
  $("#rangeValue").text($("#reversedRange").val());
  
  $("#reversedRange").on('change input', function() {
    $("#rangeValue").text($(this).val());
  });
});
#reversedRange {
  direction: rtl
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Max<input type="range" min="0" max='5' value="0" step="1" id="reversedRange">Min
<div>value: <span id="rangeValue"></span>
</div>

【讨论】:

  • 很适合direction: rtl 属性。不是纯 HTML,但至少比那些 javascript 解决方案要好得多。至少它足够短,可以放入内联样式。
  • 不错的把戏。仅供参考,如果您在事件中添加“输入”(例如.on("change input"),它将实时更新。
【解决方案2】:

这只是简单地使用 CSS 和纯 JavaScript。我希望这个 sn-p 对你有帮助。

CSS 和 HTML

input{
   -webkit-transform: rotateY(180deg);
   -moz-transform: rotateY(180deg);
   -ms-transform: rotateY(180deg);
   -o-transform: rotateY(180deg);
   transform: rotateY(180deg);
}
Max<input type="range" min="0" max='5' value="0" step="1" onmousemove="document.getElementById('Range_Value').innerHTML=this.value" onchange="document.getElementById('Range_Value').innerHTML=this.value">Min

<h3>Value: <span id="Range_Value">0</span></h3>

【讨论】:

  • 这个解决方案的缺点是键盘输入反了——左箭头向右移动拇指,右箭头向左移动拇指。
  • 当你可以简单地做direction: rtl时你为什么要这样做?另一种解决方案要简单得多。
【解决方案3】:

另一种不改变范围外观或工作方式的方式:

$("#reversedRange").on('change input', function() {
  var output = Math.abs($(this).val());
  $("#rangeValue").text(output);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="range" min="-5" max='0' value="-5" step="1" id="reversedRange">

<h3>Selected Value is: <span id="rangeValue"></span></h3>

【讨论】:

  • 我在不使用 javascript 的情况下寻求解决方案,否则已经有很多类似的问题,这个问题会被标记为重复的问题。
  • 你可以在没有javascript的情况下使用它,我只是添加它来显示结果。无论如何,您都需要在某个时候处理表单数据,因此您可以轻松地将负值转换为您可以使用的东西。
  • 嗯....我想知道那个javascript是否只是为了显示,因为* -1似乎是必要的?
  • 它只是从值中删除-,因为滑块返回一个从-5到0的值。你也可以在前端使用Math.abs(),或者用任何你喜欢的语言来做在后端用于处理表单中的数据。
  • 我将删除 -1,因为 * -1 可以移动到后端完成,但我必须说 CSS 解决方案要好得多,尤其是当您还需要处理负值时.
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 2012-04-17
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多