2016-03-25 25 views
0

我有两个“DIV”,一个在左边,一个在右边。正确的有可拖动的元素,左侧有可拖放的容器。这两个DIV都有CSS属性overflow: auto,这在我的实现中非常重要,因为当DIV溢出时,我需要在每个div中出现滚动条。

当从一个div拖动到另一个使用jquery的滚动溢出时div消失

问题是,当我拖动右侧DIV中的元素并将其移动到左侧时,它会在DIV边缘后消失。

这是我正在尝试做的一个示例。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Practice</title> 
 

 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
    <script> 
 
    $(function() { 
 
     for (var i = 1; i <= 20; i++) { 
 
     $('#right').append($('<div></div>') 
 
      .addClass('item') 
 
      .html(i)); 
 

 
     } 
 
     $(".item").draggable({ 
 
     cursor: "move", 
 
     revert: "invalid" 
 
     }); 
 
     $("#bin").droppable({ 
 
     drop: function(event, ui) { 
 
      var mydiv = $(ui.draggable); 
 
      $("#bin").html("Dropped"); 
 
     } 
 
     }); 
 
    }); 
 
    </script> 
 

 
    <style> 
 
    #left { 
 
     border: 2px solid black; 
 
     position: fixed; 
 
     width: 49%; 
 
     height: 98%; 
 
     overflow: auto; 
 
    } 
 
    #right { 
 
     border: 2px solid black; 
 
     position: fixed; 
 
     left: 52%; 
 
     top: 2%; 
 
     width: 46%; 
 
     height: 98%; 
 
     overflow: auto; 
 
    } 
 
    #bin { 
 
     border: 2px solid black; 
 
     position: relative; 
 
     left: 12%; 
 
     top: 5%; 
 
     width: 75%; 
 
     height: 75%; 
 
    } 
 
    .item { 
 
     border: 2px solid black; 
 
     left: 12%; 
 
     top: 5%; 
 
     width: 15%; 
 
     height: 5%; 
 
    } 
 
    </style> 
 

 
</head> 
 

 
<body> 
 
    <div id="left"> 
 
    <div id="bin"> 
 

 
    </div> 
 
    </div> 
 

 
    <div id="right"> 
 

 

 

 

 
    </div> 
 

 
</body> 
 

 
</html>

+0

像这样的事情不? https://jsfiddle.net/8k21bsu8/ –

+0

不完全是,当您将它拖到其父DIV(右DIV)的左侧时,它会消失在其他内容的后面。 –

回答

1

您需要删除溢出:自动在你的CSS。然后您会看到该项目在div之间拖动时可见。

为了完成你想要的功能,你需要一个外部的div来包装两个容器盒。你会在外部div上设置一个固定的高度,然后使用overflow-y:scroll来获得你的功能。

+0

是否这样? https://jsfiddle.net/L4ycwr12/ –

+0

,但不会然后两个内部div分享滚动?我需要每个div有一个单独的滚动。 –

+0

不,divs不会共享滚动条。 – EricBellDesigns

0

你可以做其他人所说的,但我总觉得做到这一点的最好办法是将可拖动的项目设置为position:fixed

看到,例如:个人 https://jsfiddle.net/gregborbonus/tzz0927p/1/

对于我来说,这允许更多的灵活性,但我也做了很多与响应式设计有关的工作,以使其工作正确。

我编辑过包含重叠的div。增加了一些功能,使其更易于看到,例如随机颜色,以及悬停和悬停事件,以便可以查看并单击每个框。

https://jsfiddle.net/gregborbonus/tzz0927p/3/

随着100和添加了滚动功能,使滚动平滑。还添加了一个快速片段,以便元素仅出现在包含框中。

这与您的代码不同,它使用2个容器,rightc作为主容器(滚动的),right用于所有元素的容器。其余部分在代码中进行了评论。

https://jsfiddle.net/gregborbonus/tzz0927p/13/

所以,这是我认识的是,要素仍然在页面加载重叠的页面。

因此,为了显示这个与更短的DIV工作,并变更为补偿的onload:

https://jsfiddle.net/gregborbonus/tzz0927p/15/

+0

如果我不需要元素堆叠在一起并最终在y轴上出现滚动溢出,这将是一个好主意。检查出更新的代码 –

+0

我不明白为什么它不会工作 –

+0

以50个单位而不是20个元素为例,那么您将无法访问溢出的元素......但是,我需要滚动才能出现在溢出的情况。 –

相关问题