我有一個項目列表。格式是這樣的:將元素向上/向下移動一個可排序列表,同時將元素保持在視口中的相同位置?
||||||||||||||||||||||||||||||
| SPACER DIV |
||||||||||||||||||||||||||||||
| ELEMENT DIV |
| |
||||||||||||||||||||||||||||||
| SPACER DIV |
||||||||||||||||||||||||||||||
| ELEMENT DIV |
| |
||||||||||||||||||||||||||||||
我使用一個jQuery腳本來移動元素向上/向下名單:
$(sortableContainer).on('click', '.sortable-controls i', function(e){
var that = $(e.target);
var item = that.closest(panel);
var thisWindow = $(window);
var scrollTop = thisWindow.scrollTop(),
elementOffsetTop = item.offset().top,
distanceTop = (elementOffsetTop - scrollTop);
if(that.hasClass('sortable-up')) {
var filler = item.prev();
var prev = item.prevAll(panel).first();
if (prev.length == 0)
return;
item.prev().remove();
prev.css('z-index', 999).css('position','relative').animate({
top: item.height()
}, 250);
item.css('z-index', 1000).css('position', 'relative').animate({ top: '-' + prev.height(), queue: false}, 300, function() {
prev.css('z-index', '').css('top', '').css('position', '');
item.css('z-index', '').css('top', '').css('position', '');
item.insertBefore(prev);
filler.insertBefore(prev);
Abayo.builder.updateSorted(item, sortableContainer);
});
var scrollDifference = distanceTop - prev.height() - filler.height();
$("html, body").animate({ scrollTop: scrollDifference, queue: false }, 300);
} else if(that.hasClass('sortable-down')) {
var filler = item.next();
var next = item.nextAll(panel).first();
if (next.length == 0)
return;
item.next().remove();
next.css('z-index', 999).css('position', 'relative').animate({
top: '-' + item.height()
}, 250);
item.css('z-index', 1000).css('position', 'relative').animate({ top: next.height(), queue: false }, 300, function() {
next.css('z-index', '').css('top', '').css('position', '');
item.css('z-index', '').css('top', '').css('position', '');
item.insertAfter(next);
filler.insertAfter(next);
Abayo.builder.updateSorted(item, sortableContainer);
});
$("html, body").animate({ scrollTop: distanceTop + next.height() + filler.height(), queue: false }, 300);
}
})
可悲的是,這並不好工作的時候該元素是不完全在中間,有足夠的元素來創建溢出y。
如何更改此腳本,因爲它始終保持該元素在視口中並考慮視口大小?
我必須能夠一直點擊頂部的元素,但點擊幾下後,下拉按鈕會落在我的視口之外,而且我必須手動滾動以繼續此操作。
很難在演示時,可視化問題所有的元素都有相同的內容和風格 – charlietfl
認真?將元素向下移動一段時間,就會發現它不能保持在視口內。 – Abayob
至少提供了一些區別,所以我們不必去嘗試弄清楚它。當我移動一些說「一些內容」,這正是我所看到的每一次 – charlietfl