jquery - 对齐 JQuery UI slider 值点对齐

标签 jquery html css jquery-ui slider

我正在使用带有 6 个点的 jQuery UI slider ,我在 slider 上方也有 6 个 div,我想将 slider 中的点定位在上方每个 div 的中间。

那么有没有办法在 jquery UI slider 中指定值的位置?

这是我正在做的事情的例子jsfiddle

$('#slider').slider({
    value:1,
    min: 1,
    max: 6,
    step: 1,
    slide: function(event, ui) {

    }
});


<div id="assesment-filter">
    <div class="assesments-wrapper">
        <div id="1" class="assesment">1</div>
        <div id="2" class="assesment">2</div>
        <div id="3" class="assesment">3</div>
        <div id="4" class="assesment">4</div>
        <div id="5" class="assesment">5</div>
        <div id="6" class="assesment">6</div>
    </div>
<div id="slider"></div>
</div>


.assesments-wrapper {
    height: 33px;
}

.assesment {
    width: 33px;
    height: 33px;
    background-color: rgb(219,219,219);
    line-height: 33px;
    float: left;
    text-align: center;
    vertical-align: middle;
    color: white;
    font-size: 18px;
    border-right: 1px solid white;
    border-bottom: 1px solid white;
}

.assesment:hover {
        cursor: pointer;
    }

.ui-slider-handle{
  display: block;
  position: relative;
  top: -6px;
  width: 15px;
  height: 15px;
  background-color: #2CBFD9;
  border-radius: 50%;
  border: 1px solid white;
}

.ui-slider-handle:hover {
  cursor: pointer;
}

.ui-slider{
  background-color: rgb(219,219,219);
  height: 3px;
  width: 203px;
  margin-bottom: 16px;
}

最佳答案

对于您来说,我只是算了一下。

anchor (蓝色)的宽度是15px + (1px + 1px)(Border) = 17px;

如果您检查 ui-slider, anchor 从 left:0% 开始,然后根据最大值、最小值和步长值递增。

在你的例子中是:max=6, min=1, step=1
因此:百分比增量为 100*step/(max-min),即 20%

并且每个 Assesment 都是 33px+1px=34px 因此导致包装器 div 为 34*6=204px 大约。

现在要使 slider anchor 居中,我们需要 slider 从 left:8.5px 开始,并且 position:relative 到包装器作为 anchor's width = 17px , assesment 的宽度 = 34px。(我无法解释得比这更好)

现在在第一步中, anchor 被放置在第一个 div 的中心....完成了一半的工作...D

现在,由于最后一步位于 left:100% 位置,因此 anchor 位于 slider 外部。这就是为什么我们需要 ui-slider 的宽度为

ui-slider width = width of wrapper - 2*(width of anchor).

如果 left=80% 是最后一步,那就是

ui-slider width = width of wrapper - 1*(width of anchor).

因此 ui-slider width = 204-2*17 = 170px;

现在,当第一步和最后一步对齐时,里面的其他所有东西也都落在了这个地方。(万岁)。

包括具有解决方案的 fiddle :Fiddle For Slider .

引用基本代码:

.assesments-wrapper {
        height: 33px;
        width: fit-content;
    }

.ui-slider{
  position: relative;
  background-color: rgb(219,219,219);
  height: 3px;
  width: 171px;
  left:8.5px;
  margin-bottom: 16px;
}

PS:我敢肯定,还有比这更好的解决方案。我刚发现这个问题,想着我是否可以不用谷歌搜索就可以做到这一点。

发现了一个有点奇怪的解决方案。我仍然会在 SO 上分享这个 :)。

关于jquery - 对齐 JQuery UI slider 值点对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360180/

相关文章:

html - 创建 slider 但无法将图像置于绝对 div 的中心

javascript - Javascript 中的 ProcessMessages()

css - 即使描述发生变化,如何设置盒子的高度保持不变? (CSS)

javascript - 在 JavaScript 中添加到数组时阻止重复项

javascript - 使用 YouTube iframe API 触发简单事件/使用player.getCurrentTime 同步事件

jquery - 停止动画然后重新启动它

html - 如何让 stroke-dasharray 在路径上看起来和在线上看起来一样

c# - MVC 5 编辑 Bootstrap 模态弹出窗口

javascript - 想从服务器端清除 UIWebView 缓存

html - 网站左侧的空白