Трудно сказать, что происходит, не видя этого в прямом эфире из первых рук (можете ли вы дать ссылку на живой сайт или сделать демо-версию jsfiddle?), Но я сделаю квалифицированное предположение;
Возможно, когда прокрутка происходит программно, меню не полностью закончено рендеринг. Возможно, значки или уведомления еще не отображаются, поэтому прокручивается вправо в более коротком меню, а затем расширяется при загрузке.
Вы можете проверить, так ли это, вызвав код внутри setTimeout
Редактировать
Вызов setTimeout(fn, 0)
вызовет fn
немедленно, но в очереди. Поскольку это, кажется, исправило ваш isse, это означает некоторую другую задачу, то есть уже поставлена в очередь , но еще не совсем запущена, но влияет на ширину навигационной панели.
Однако невозможно скажем точно, что не видя код, работающий из первых рук. Чтобы узнать себя, вы можете использовать процесс исключения :
Например, попробуйте , удалив setTimeout
снова, и удалите значки и посмотрите, что произойдет. Если проблема не устранена, попробуйте добавить значки обратно и вместо них удалить номера уведомлений и т. Д. c.