Луна, это, конечно, возможно, но, возможно, не совсем тривиально.Это очень похоже на проблему, с которой я столкнулся в своей CMS при выполнении функции продвижения / понижения для статей.В этом случае, если пользователь выбрал понизить элемент, скажем, с № 4 до № 5, первым шагом было получить значение и выполнить изменение через Ajax.Вторая часть состояла в том, чтобы определить id значения ниже и продвинуть его снова через Ajax.Хитрость заключалась в том, чтобы определить их на лету через Ajax, чтобы минимизировать попадания в базу данных.
Теперь, в вашем случае, есть дополнительный шаг, который заключается в том, что элемент теоретически может перепрыгнуть несколько мест вверх или вниз,где в моем случае это всегда был только один вверх / вниз один.Итак, я думаю, что хитрость заключается в том, чтобы дать системе представление о текущей структуре результатов, а при изменении предоставить ей новый набор для сравнения.Во время этого процесса сравнения происходит исчезновение, мигание и т. Д.
Итак, с практической точки зрения, я бы начал с запроса, который вернул массив.При обновлении вы можете вернуть аналогичный массив с обновленными данными.Используя функции массива, вы можете сравнить положение с первым набором данных, по убыванию с элементов 1-X (в цикле foreach). Если элемент был отброшен, вы переходите в соответствующий элемент div.Если предмет перемещается вверх, вы назначаете его на более высокий div.Хороший визуальный эффект может состоять в том, чтобы сначала перейти от цвета фона к темному (или серому), а затем сделать медленное затухание для эффекта.Поскольку в элементе div может находиться только один элемент за раз, новый элемент по существу «ударит» следующий элемент, поэтому важно убедиться, что каждый элемент переназначен, чтобы он не просто исчезал.
Я бы беспокоился о том, чтобы делать это каждые несколько секунд ... это много попаданий в БД, и Javascript будет довольно сильно давить на браузер клиента.Может быть, каждые 10-15 секунд будет более уместным.