我有两个" DIV" s,一个在左边,一个在右边。右边有可拖动的元素,左边有一个可放置的容器。两个DIV都有CSS属性overflow: auto
,这在我的实现中是必不可少的,因为当DIV溢出时我需要在每个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>
&#13;
答案 0 :(得分:1)
您需要在CSS中删除overflow:auto。然后,当然后在div之间拖动时,您将看到该项目可见。
为了完成您喜欢的功能,您需要一个外部div包装两个容器盒。您在外部div上设置了固定高度,然后使用overflow-y:scroll来获取您的功能。
答案 1 :(得分:0)
你可以像其他人建议的那样做,但我总是发现实现这一目标的最佳方法是将可拖动项目设置为position:fixed
参见例如: https://jsfiddle.net/gregborbonus/tzz0927p/1/
就我个人而言,这可以提供更大的灵活性,但我也做了很多有关响应式设计的工作,以使其正常工作。
我编辑过包含重叠的div。添加了一些功能,使其更加可见,如随机颜色,以及悬停和悬停事件,以便查看并单击每个框。
https://jsfiddle.net/gregborbonus/tzz0927p/3/
使用100并添加滚动功能以使滚动平滑。还添加了一个快速代码段,以便元素只显示在包含框中。
这与你的代码不同,它使用2个容器,rightc用于主容器(滚动的容器),右边用于所有元素的容器。其余部分在代码中进行了评论。
https://jsfiddle.net/gregborbonus/tzz0927p/13/
所以,我意识到这些元素仍会在页面加载时与页面重叠。
所以,为了显示这个使用更短的div并改变以补偿onload: