jquery - 通过 Jquery UI Sortable 拖动时应用阴影

标签 jquery css jquery-ui

我想为使用 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);
}

最佳答案

这是获得阴影效果的方法。当您拖动元素时,它会在列表中放置一个模糊的矩形作为占位符。它还会在您拖动时使元素本身具有 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;}

关于jquery - 通过 Jquery UI Sortable 拖动时应用阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143167/

相关文章:

jquery - 将页面 View 显示为 jQuery-UI 对话框

javascript - jQuery - 显示和隐藏电话号码的最后 4 个数字

css - 语义 ui - 如何设置表格标题的样式

css - 使用 CSS 水平对齐标签和两个 DIV

css - HTML CSS div 向左浮动在下面,在 div 向右浮动下方?

jquery - 如何在jquery中引用JSF组件Id?

javascript - jquery ui slider 奇怪的行为,幻灯片值高于最小值且低于最大值

javascript - 将大型 JavaScript 数组发送到 Web API

Javascript/Jquery 不支持延迟加载..facebook 是如何做到的?

javascript - 如何使用 javascript/jquery 获取数组中选中和未选中的复选框值