You can intervene in scrollTopfrom scrollParentin an event sortso that it does not exceed scrollParent height. The result is not perfect, but there is probably a way to improve it.
Like this:
sort: function (e, ui) {
var scrollParent = $(e.target).sortable('instance').scrollParent;
if( scrollParent.scrollTop()>scrollParent.height()){
scrollParent.scrollTop(scrollParent.height())
}
}
: http://jsfiddle.net/zt2sd3kv/1/
,
callculation scrollTop , scrollTop - http://jsfiddle.net/n5eL2e55/2/
$(".list").sortable({
items: ".item",
axis : "y",
helper:'clone',
containment: "parent",
scroll: true,
start: function(e, ui) {
var scrollParent = $(this).data("ui-sortable").scrollParent;
var maxScrollTop = scrollParent[0].scrollHeight - scrollParent.height() - ui.helper.height();
$(this).data('maxScrollTop', maxScrollTop);
},
sort: function (e, ui) {
var scrollParent = $(this).data("ui-sortable").scrollParent,
maxScrollTop = $(this).data('maxScrollTop');
if(scrollParent.scrollTop() > maxScrollTop){
scrollParent.scrollTop(maxScrollTop);
}
},
}).disableSelection();