【问题标题】:jquery-ui: dragging element outside viewportjquery-ui:在视口外拖动元素
【发布时间】:2014-04-09 20:24:16
【问题描述】:

我有一个菜单隐藏在视口之外的情况。

html, body {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

#menu {
    position: absolute;
    width: 100px;
    height: 100%;
    top: 0;
    right: -100px;
}

我还有一个可拖动的元素。现在,当我将可拖动对象拖到右侧并尝试将其移到视口之外(也在右侧)时,我可以通过将视口向左移动来使菜单可见。结帐jsfiddle 如何禁用此行为?

【问题讨论】:

    标签: javascript css jquery-ui-draggable


    【解决方案1】:

    您可以使用滚动选项来阻止页面滚动。

    $( "#draggable" ).draggable({scroll: false });
    

    DEMO

    它可以与containment: "parent" 一起使用,以防止框伸出其父级。

    您的代码似乎发生的情况是,当您到达角落时页面会滚动,然后再也不会滚动回来,因为您将 overflow: hidden 设置为 body

    使用scroll: false 的缺点是您也无法将元素拖到页面下方。

    文档:http://api.jqueryui.com/draggable/#option-scroll

    【讨论】:

      【解决方案2】:

      你的意思是你想把它保存在containment - 例如

      $( "#draggable" ).draggable({ containment: "parent" });
      

      Like this ?


      http://api.jqueryui.com/draggable/#option-containment


      更新:演示显示了远离 body 元素的“遏制” - 正如@Mathias 指出的那样,body 上的“溢出隐藏”并不意味着您不能“拖动”给它。因此,包装远离这些的元素可以解决这个问题。

      【讨论】:

      • 我注意到在您的示例中,您可以将项目仍然拖到底部
      • @JeanlucaScaljeri,是的,如果你愿意,那么这将允许
      • 不,这不是我想要的。阻止这种情况发生的唯一方法是将scroll 设置为false 吗?
      • 把它想象成任何 html 元素,它们随着内容的增长而增长 - 参见这个例子 - jsfiddle.net/3WgnH - 'containment' 的高度没有设置,所以它不能滚动超越“内容”。一切都取决于您的“设计”是什么,您是否需要使用{containment:'parent'}{scroll:false} 或两者都使用
      猜你喜欢
      • 2011-01-07
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多