У вас много javascript, и дисплей очень приятный, но есть одна важная вещь, которую я могу почти гарантировать, - это ваша проблема. Мне очень сложно копировать и проверять, но я бы настоятельно рекомендовал следующее:
Ваш подход к кладке использует фильтр show/hide, который анимируется сам по себе. Задача, которую это ставит, заключается в том, что кладка делает свои расчеты о том, где положить вещи сразу, но показать/скрыть анимации, которые требуют времени, чтобы закончить. То, что у вас осталось, - это основанный на удаче подход к каменной кладке, который знает, каким будет результат. Вот несколько вариантов, которые я бы рассмотрел:
- Переключение с кладки на изотоп. Это тот же базовый движок, но он имеет встроенную фильтрацию, которая полностью устраняет это осложнение.
- Задержка настройки кладки до тех пор, пока не завершится показ/скрытие (я считаю, что это 0,5 секунды по умолчанию).
- Используйте разделитель для каждого элемента. Это весело, но идея состоит в том, что вы помещаете контейнер вокруг своих элементов, который будет отображать/скрывать, который занимает местозаполнитель для ширины/высоты элемента. Вы прикрепляете местозаполнитель div к кладке, так что, пока вы показываете/скрываете свой внутренний элемент, кладка все еще понимает, что это должно быть. Его невидимый для пользователя, поэтому он не имеет заметной разницы.
В любом случае, длинный рассказ, я думаю, что № 1 - лучший подход. Это сэкономит вам значительное время на разработку, чтобы использовать его для фильтрации. # 2 - это вид хака, который, по крайней мере, позволит вам проверить, связана ли проблема с моим ответом. # 3 - это удобная информация, если у вас когда-либо была сетка, в которой есть элементы, которые изменяют размер, когда пользователь взаимодействует с ними.
Надеюсь, что это поможет.
Рад, что это сработало; на самом деле это лежат в основе моего ответа, но оказалось, что это намного проще. –