jQuery UI Draggable无法轻松实现效果

时间:2016-08-27 07:08:04

标签: javascript jquery angularjs

jQuery Draggable运行不顺畅。我希望它在拖动时表现得像平滑过渡,但同时值也应该改变。

$(document).ready(abc);
$(window).resize(abc);

function abc() {
  var dragParent = $(".drag-parent").height();
  var dragRulerLi = $(".drag-ruler ul li").length;
  $(".drag-ruler ul li").height(dragParent / dragRulerLi);

  $(".drag-ruler").draggable({
    axis: "y",
    scroll: false,
    create: function(event, ui) {
      var counterval = $('.ruler-counter').offset().top;
      $('.drag-ruler ul li').each(function() {});
    },
    drag: function(event, ui) {
      var counterval = $('.ruler-counter').offset().top;
      $('.drag-ruler ul li').each(function() {
        if ($(this).offset().top + -20 <= counterval) {
          $('.ruler-counter').text($(this).attr('data-counter'))
        }

      });
    }
  });
  var dragParent = $(".drag-parent").height();
  var dragRulerLi = $(".drag-ruler ul li").length;
  $(".drag-ruler ul li").height(dragParent / dragRulerLi);
};
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
body {
  overflow: hidden;
}
.drag-ruler {
  top: 0;
  position: absolute;
  height: 100%;
  width: 50px;
  right: 0;
}
.drag-ruler ul li {
  list-style: none;
  text-align: right;
}
.drag-ruler ul li div span {
  display: inline-block;
  vertical-align: top;
  height: 1px;
  background: blue;
  width: 40%;
}
.drag-ruler ul li.feet-cell div span {
  width: 100%;
}
.drag-ruler ul li.half-inch-cell div span {
  width: 60%;
  display: inline-block;
  vertical-align: top;
}
.drag-parent {
  position: relative;
  overflow: hidden;
  height: 500px;
}
.ruler-counter {
  background: #26a69a;
  position: fixed;
  width: 41px;
  top: 250px;
  height: 30px;
  margin-top: -25px;
  right: 55px;
  text-align: center;
  line-height: 30px;
  color: #fff;
  border-radius: 3px;
}
.ruler-counter:after {
  position: absolute;
  top: 50%;
  margin-top: -5px;
  left: 100%;
  content: '';
  display: table;
  border: 5px solid transparent;
  border-left: 5px solid #26a69a;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>

<div class="drag-parent">
  <div class="ruler-counter"> <span></span> 
  </div>
  <div class="drag-ruler">
    <ul>
      <li class="feet-cell" data-counter="1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="1.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="2.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="3.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="4.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="5.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="6">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="6.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="7.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="8.11">
        <div><span></span>
        </div>
      </li>
      <li class="feet-cell" data-counter="9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.1">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.2">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.3">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.4">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.5">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.6" class="half-inch-cell">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.7">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.8">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.9">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.10">
        <div><span></span>
        </div>
      </li>
      <li data-counter="9.11">
        <div><span></span>
        </div>
      </li>
    </ul>
  </div>
</div>

查看JSFiddle

0 个答案:

没有答案