У меня есть форма внутри контейнера с переполнением: скрыто, и я меняю его имя класса, где каждый класс делает свой верхний край, чтобы показать правильное сфокусированное поле с помощью focus().
Таким образом, jQuery применяет только className. Никакой анимации, кроме webkit, не участвует.
Проблема в том, что до появления анимации форма ДВИЖЕТСЯ внутри контейнера, чтобы открыть скрытое поле. В инспекторе ничего не меняется: верхний, верхний маржа, верхнее заполнение остаются неизменными.
Я попробовал preventDefaults();
на сфокусированных полях, никакого успеха.
Вот сценарий, показывающий случай.
UPDATE: я хочу пояснить, что когда "табуляция" в следующее поле, она идет туда, но анимация css происходит поверх нее, и форма либо не перескакивает без анимации, либо просто оживляет ALONG с уже пронумерованной прокруткой/показывая, что ожидаемое поле выходит за пределы контейнера.
Нажатие на вкладку тегов легенд работает так, как ожидалось. Я попытаюсь предотвратить дефолты для событий keydown, а не фокуса, и я буду держать вас в курсе.
За этот пост это выглядит довольно сложной проблемой: https://forum.jquery.com/topic/chrome-bug-or-how-do-i-prevent-a-form-field-to-scroll-the- контейнер-когда-ориентированных
Я справился с подобными проблемами, вручную управляя атрибутом tabindex входов. Это устраняет нежелательную псевдопрокрутку, но также удаляет возможность входа на вкладки вне окна просмотра. Если вы хотите жить с этим, вы можете легко добавить код для своих обработчиков кликов для добавления или удаления tabindexes:
$(inputEl).attr('tabindex', -1); // removes tabbing
$(inputEl).attr('tabindex', 1); // restores tabbing
Удалите индексы вкладок с входов вне окна просмотра и восстановите их для видимых входов.