【问题标题】:Draggable Slider Ruler in jQueryjQuery中的可拖动滑块标尺
【发布时间】:2020-05-24 13:26:23
【问题描述】:

寻找一个可拖动的(通过拖动是指双击滚动)标尺,如下面的链接所示。

https://www.ladderlife.com/apply#SW5zdXJlZFBlcnNvbi5IZWlnaHQ=

如果有人能帮助我让库实现相同的功能,我将不胜感激

【问题讨论】:

    标签: javascript html jquery css jquery-ui


    【解决方案1】:

    考虑以下内容。

    $(function() {
      function getVal() {
        var p = $(".ladder").position().top;
        var r = 1;
        var h = $(".step").height();
        switch (true) {
          case (p > 18 && p < 60):
            r = 10;
            break;
          case (p > -22 && p < 17):
            r = 9;
            break;
          case (p > -55 && p < -21):
            r = 8;
            break;
          case (p > -92 && p < -54):
            r = 7;
            break;
          case (p > -130 && p < -92):
            r = 6;
            break;
          case (p > -166 && p < -130):
            r = 5;
            break;
          case (p > -200 && p < -166):
            r = 4;
            break;
          case (p > -238 && p < -200):
            r = 3;
            break;
          case (p > -272 && p < -238):
            r = 2;
            break;
          case (p < -272):
            r = 1;
            break;
        }
        return r;
      }
      $(".ladder").draggable({
        axis: "y",
        containment: [0, -300, 150, 60],
        drag: function(e, ui) {
          $(".value").val(getVal());
        }
      });
    });
    .ui-ladder {
      width: 150px;
      height: 100px;
      text-align: center;
      overflow: hidden;
      position: relative;
    }
    
    .ui-ladder .step {
      padding: 0.5em 0;
      border-bottom: 1px solid #ccc;
    }
    
    .ui-ladder .marker {
      border-top: 2px solid rgba(255,0,0,0.65);
      position: absolute;
      top: 51px;
      width: 100%;
    }
    
    .ui-ladder .value {
      position: absolute;
      top: 41px;
      left: 118px;
      width: 1.5em;
      padding-left: 5px;
    }
    
    .ui-ladder .arrow {
      position: absolute;
      width: 0;
      height: 0;
      border-top: 10px solid transparent;
      border-bottom: 10px solid transparent;
      border-right: 10px solid #ccc;
      margin-left: -10px;
      top: 42px;
      left: 118px;
    }
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.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>
    <div class="ui-ladder ui-widget">
      <div class="ui-widget-content ladder" style="top: -145px">
        <div class="step">10</div>
        <div class="step">9</div>
        <div class="step">8</div>
        <div class="step">7</div>
        <div class="step">6</div>
        <div class="step">5</div>
        <div class="step">4</div>
        <div class="step">3</div>
        <div class="step">2</div>
        <div class="step">1</div>
      </div>
      <div class="marker"></div>
      <div class="arrow"></div>
      <input class="value ui-widget-header" value="5" type="text" />
    </div>

    【讨论】:

    • 谢谢,将内部台阶切成英寸怎么样。例如,在 4 到 5 之间,我们得到了 11 个多步,基本上在整数之间多了 11 个步,这样我就可以得到 4 英尺和 11 英寸之类的东西。问候
    • @KarueBensonKarue 你没有澄清你想要完全相同的东西。我提供了一个你可以开始的基本示例。请回顾:我如何提出一个好问题? stackoverflow.com/help/how-to-ask
    • 对不起,我知道了,我已经改进了,顺便说一下,你是如何获得标记的默认位置的。我的意思是可拖动位置,您的位置被拖动到标记读数为 5 的位置,我如何以编程方式拖动它以适应另一个标记位置。
    • @KarueBensonKarue 如您所见,marker 相对于父对象具有绝对定位。由于用户仅在 Y 轴上拖动 ladder,我们查看 top 值。然后top 值与您要表示的特定值相关。我用 switch() 做到了,但你可以做很多事情,比如使用 Modulus。
    • 哇!太好了,我刚刚意识到你通过这个&lt;div class="ui-widget-content ladder" style="top: -145px"&gt; 设置默认位置的方式。我已经调整了顶部位置以适合我自己的规格。谢谢,现在一切都像魅力一样发挥作用
    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多