css 如何将一个数字放置在水平线上的两个数字之间?[已关闭]

8cdiaqws  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(151)

昨天关门了。
Improve this question
我不能完全理解这种设计。什么是好的方法?
我正在动态接收3个号码:最小值,最大值和介于两者之间的值。
如何确定中间数字的位置,以及如何进行设计?
我只找到了像NoUiSlider的东西,但我不需要滑块。
到目前为止,我所做的是添加div,使其看起来有点相似,但感觉不正确。
任何暗示我都很高兴。
谢谢大家!
PS我知道图像不是100%正确的pips。

flvlnr44

flvlnr441#

这是我想出来的,我相信你能做好剩下的。
我在这里所做的是为每个MIN和MAX值创建两个span。我稍后会得到这些span的值。在它们之间有一个div充当滑块。在滑块中有一个指示符将指出结果。
然后你得到输入的值,把它和它的最小值比较,这样我们就知道要移动多少,从这里开始它的基本数学和比较。

var maxSpan = document.getElementById('max')
var minSpan = document.getElementById('min')
var sliderSpan = document.getElementById('slider')
var input = document.getElementById('value')
var differenceInValue = maxSpan.innerHTML - minSpan.innerHTML
var sliderWidth = sliderSpan.offsetWidth

function myFunc() {
  var inputValue = input.value
  var inputPercent = inputValue - (+minSpan.innerHTML)
  var calculatePosition = calculatePos(inputPercent, sliderWidth, differenceInValue)
  document.getElementById('indicator').style.left = calculatePosition + 'px'
}

function calculatePos(x, y, z) {
  return (x * y) / z
}
.container {
  background-color: beige;
  text-align: center;
}

.slider {
  background-color: coral;
  width: 300px;
  display: inline-block;
  height: 20px;
  position: relative;
}

#indicator {
  position: absolute;
  left: 0;
  top: 0;
  width: 2px;
  height: 20px;
  display: inline-block;
  background-color: darkgreen;
}
<div class="container">
  <span id="min">4</span>
  <div class="slider" id="slider">
    <div id="indicator">&nbsp;</div>
  </div>
  <span id="max">6</span>
</div>
<input type="text" id="value" onchange="myFunc()">

相关问题