jQuery可排序项浮点右排序不顺畅问题

Roy*_*hoa 6 css jquery-ui jquery-ui-sortable

当项目向右浮动时,jQuery可排序拖动工作不顺畅.我尝试修复它没有成功,我不明白为什么这是一个问题.

要重现并理解该问题,您需要尝试拖动项目,您会看到有时您想要将项目放在某个地方并且占位符停留在另一个地方.看附图可以更好地理解.

在此输入图像描述

删除float:right属性时它会很好.

注意:它有点难以理解这个问题,我在jsfiddle上重现它但你需要用它来理解它

https://jsfiddle.net/royshoa/4Lprn9bs/72

我很乐意为此得到一些答案.

Vic*_*kel 4

看起来右侧的浮动#sortable扰乱了 的行为jquery-ui-sortable

保持相反的顺序 (3,2,1) 并将其向右对齐并保持所需的功能按照您的描述工作:

  • 取出float:rightfrom#sortable并将其放置在parent 处.example-box:现在parent 的容器向右浮动,但不影响#sortable

  • 要获得相反的 3、2、1 顺序,您只需使用get().reverse()
    反转 jQuery 代码中的元素顺序。这样做的顺序现在不再影响,因为不再使用jquery-ui-sortablefloat:right

html:

<div class="example-box">
  <ul id="sortable">
    <li class="ui-state-default">1</li>
    <li class="ui-state-default">2</li>
    <li class="ui-state-default">3</li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.example-box {
  margin: 50px;
  border: 1px solid navy;
  float: right;
}

#sortable {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

#sortable li {
  margin: 3px 3px 3px 0;
  padding: 1px;
  width: 120px;
  height: 120px;
  font-size: 4em;
  text-align: center;
  float: left;
}

#sortable li {}

.draggable-placeholder {
  border: 2px dashed #D9D9D9 !important;
  background-color: #F7F7F7 !important;
}
Run Code Online (Sandbox Code Playgroud)

jQuery:

jQuery(function($) {

  $('#sortable').sortable({
    opacity: 0.8,
    revert: true,
    forceHelperSize: true,
    forcePlaceholderSize: true,
    placeholder: 'draggable-placeholder',
    tolerance: 'pointer',
    axis: 'x'
  });

  var list = $('ul#sortable');
  var listItems = list.children('#sortable>li');
  list.append(listItems.get().reverse());

});
Run Code Online (Sandbox Code Playgroud)

这是一个工作的jsfiddle:https ://jsfiddle.net/n7b9wezj/3/

注意:我已经设置了axis:x,因为它可以更好地显示功能,但您不需要设置它。蓝色边框只是为了说明div的位置...

编辑以反映 这里的评论是另一个使用 Flexbox 的示例: https: //jsfiddle.net/y9qd08bn/1/ 我已将宽度设置为 90%,因此它在小提琴中看起来更好,但您可以使用 100% 。