【问题标题】:JQuery Draggable: Is it possible to snap to grid after mouse release?JQuery Draggable:鼠标释放后是否可以捕捉到网格?
【发布时间】:2009-07-31 17:23:22
【问题描述】:

基本上,我想使用网格选项将可拖动的 div 捕捉到 30 x 30 网格,但我想保持拖动平滑。那么有没有一种方法可以在鼠标释放(或类似的东西)时捕捉到网格

【问题讨论】:

    标签: jquery-ui draggable


    【解决方案1】:

    更正@Zed 这将使用中心来决定将其放置在哪个网格中。大多数可拖动对象位于哪个网格中。

    stop: function(e, ui) {
        var grid_x = 30;
        var grid_y = 30;
        var elem = $( this );
        var left = parseInt(elem.css('left'));
        var top = parseInt(elem.css('top'));
        var cx = (left % grid_x);
        var cy = (top % grid_y);
    
        var new_left = (Math.abs(cx)+0.5*grid_x >= grid_x) ? (left - cx + (left/Math.abs(left))*grid_x) : (left - cx);
        var new_top = (Math.abs(cy)+0.5*grid_y >= grid_y) ? (top - cy + (top/Math.abs(top))*grid_y) : (top - cy);
    
        ui.helper.stop(true).animate({
            left: new_left,
            top: new_top,
            opacity: 1,
        }, 200);
    },
    

    【讨论】:

      【解决方案2】:

      如果这就是你想要对网格做的所有事情,你可以模仿它:

      $("#myobj").draggable({
        ...
        stop: function(event, ui) {
          t = parseInt($(this).css(top);
          l = parseInt($(this).css(left);
          $(this).css(top , t - t % 30);
          $(this).css(left, l - l % 30);
        }
        ...
      });
      

      【讨论】:

        【解决方案3】:

        尝试过渡!

        我现在刚刚发现的一个不错的小事情是,如果您为拖动的元素赋予过渡的 css 属性,它将影响它捕捉到网格的速度。

        $(function() {
          $(".draggable").draggable({
            containment: 'window',
            grid: [30, 30]
          });
        });
        .draggable {
          background: #333;
          color: whitesmoke;
          font-family: 'sans-serif', 'arial';
          padding: 5px 12px;
          display: inline-block;
          transition: top 0.05s ease-in-out, left 0.05s ease-in-out
        }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
        
        <div class="draggable">Drag Me!</div>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-08
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-22
          • 2013-08-17
          • 1970-01-01
          相关资源
          最近更新 更多