Проблема в том, что когда div перетаскивается для выполнения сортировки, jQuery эффективно устанавливает draggable
(так, например, div.c
в вашем случае) как абсолютно позиционированное (чтобы оно могло перемещаться по экрану). Не уверен насчет точных причуд CSS (возможно, кто-то умнее, чем я могу объяснить более полно), но в основном ваш плавающий .handle
ведет себя немного странно в сочетании с p
в абсолютно позиционированном контейнере. Поля на p
теперь, похоже, устанавливаются изнутри div, а не сливаются с ними, в то время как span
все еще плавает в верхнем левом углу div.
Одним из решений является добавление того же верхнего поля к span
, что и к p
, но только при его перетаскивании. Другими словами, добавьте следующий CSS (я думаю, что 1em
должно быть полем по умолчанию, применяемым к вершине p
):
.ui-sortable-helper .handle {
margin-top: 1em;
}
Если вы заинтересованы в углублении в CSS, добавьте следующее в приведенный выше код, и вы воспроизведете проблему, не прибегая к сортировке:
.c { width: 500px; height: 40px; position: absolute; }