我想为使用jQuery UI Sortable拖动的元素添加“阴影”。如果用户删除了元素(而不是当前拖动的元素本身),则此阴影基本上位于的区域上,其中元素将是。当用户拖动列表时,Trello会实现此功能。
有谁知道如何接近这个?我可以看到我们可以访问被拖动的元素(通过ui.item
),但是如果我们可以访问它如果被删除的那个区域,我会感到困扰。在我的代码中,我有以下内容:
<script>
$(function() {
$( "#sortable-lists" ).sortable({
start: function (event, ui) {
ui.item.toggleClass('dragged');
},
stop: function (event, ui) {
ui.item.toggleClass('dragged');
},
update: function (event, ui) {
var data = $(this).sortable('serialize');
var index = ui.item.index();
ui.item.trigger('dropList', [ui.item.data('id'), index]);
$.ajax({
data: data+"&authenticity_token="+AUTH_TOKEN,
type: 'PATCH',
url: '/api/lists/update_order'
});
}
});
$( "#sortable-lists" ).disableSelection();
});
</script>
CSS:
.dragged {
transform: rotate(3deg);
}
答案 0 :(得分:1)
这是如何获得阴影效果。当您拖动项目时,它会在列表中放置一个模糊的矩形作为占位符。当您拖动时,它还会使项目本身具有50%的不透明度,以便您可以通过它看到阴影。
JS
yourlist.sortable({
placeholder: 'sortable-placeholder',
opacity: 0.5,
sort: function(event, ui){
$(".sortable-placeholder").height(ui.item.outerHeight());
}
});
CSS
.sortable-placeholder { box-shadow: inset 0px 0px 20px 10px #fff; background-color: #bbb; min-height: 5em;}
答案 1 :(得分:-1)