在响应式环境中使用 jQuery draggable() ...

Using jQuery draggable() in a responsive environment…

我正在使用 jQuery UI 的 draggable() 方法处理相当典型的图像 "reveal" 效果;我在响应式环境中遇到很多问题:

http://codepen.io/ProfessorSamoff/pen/qEaNMM

如您所见,显示功能在全尺寸和浏览器 window 尺寸缩小时都能正常工作。但是当浏览器 window 调整大小时,可拖动手柄并不总是捕捉到正确的位置。 (虽然它在单击和拖动时会这样做。)

同样,您会看到我有一些针对浏览器进行检查的注释代码 window 大小:

if($(this).width() != width)
{
}

这可以在调整浏览器大小时将可拖动手柄放到正确的位置 window,但它破坏了可拖动功能。

我已经尝试了 Stack Overflow 上关于 draggable() 和 resizable() 的一些建议,但都没有用。

看这里: http://codepen.io/anon/pen/LEmgBP

javascript现在这样显示:

var $reveal = $(".reveal");
$reveal.draggable({ 
    axis: "x",
    containment: "parent",
    iframeFix: true,
    refreshPositions: true,
    drag: function()
    {
      var position = $(this).position();
      var parentWidth = $(this).parent().width();
      var width = (position.left / parentWidth) * 100
      $(".featured").width(width + "%");
    }
  });

$(window).resize(function() {       
    $reveal.css('left', $(".featured").width()+'px')
});

它并不优雅,但似乎有效。

基本上我做了两件事: 1) 我用 % 设置了 $(".featured") 宽度 2) 在 windows resize 我用

改变光标的位置
$reveal.css('left', $(".featured").width()+'px')

注意:第 2 点是一种解决方法,但我没有找到任何以编程方式移动光标的方法。也许使用库来模拟拖动事件(比如 https://github.com/mattheworiordan/jquery.simulate.drag-sortable.js/blob/master/README.md)你会找到更好的东西