Вход

Просмотр полной версии : overflow по окончании анимации


jasper-blondin
11.07.2015, 11:19
Здравствуйте!

Нужна помощь в решении головоломки.
Написал скрипт выпадающего меню на JQuery. Во всех браузерах работает нормально (проверял на локальном компьютере).
После того, как я установил данный скрипт на сайт, меню работает должным образом только в Firefox. Chrome, Yandex, IE -- не выпадает меню третьего уровня. Причина -- после завершения анимации выпадания меню второго уровня для него устанавливается свойство overflow:hidden (которое используется во время анимации JQuery, как я понял).

Увидеть баг можно здесь: http://ez-bitrix.ru
Для того, чтобы появилось меню третьего уровня, желательно сузить окно браузера до 600 пикселей, к примеру, чтобы появилась собирающая кнопка "Еще...".

Очень жду ваших советов.

рони
11.07.2015, 11:34
jasper-blondin,
ни кнопки "Еще...". ни третьего уровня меню нигде не обнаружил.

jasper-blondin
11.07.2015, 11:49
Нужно сузить окно браузера пикселей до 800, к примеру, и обновить страницу. Тогда те пункты меню, которые не поместятся, свернутся в кнопку "Еще..." (последний пункт меню). Вот там получится 3 уровня меню: главный, свернутые пункты и их подменюшки.

рони
11.07.2015, 12:14
jasper-blondin,
все функции анимации по завершении выполняют callback поставьте в callback необходимые изменения css;

jasper-blondin
11.07.2015, 12:32
Да, конечно, такой радикальный метод сработает.
Однако мне интересна сама причина: из-за чего возникает проблема. Это такой баг JQuery, который проявляется только в webkit и т.п. только при каких-то непонятных условиях?

Интересно то, что:
1) в Firefox все работает отлично;
2) в Chrome работа скрипта разная:
a) если открыть файл только лишь с меню -- все работает отлично;
б) если установить скрипт на сайт -- проявляется баг.

Конечно, проблема решена (криво, но решена). Но хотелось бы знать, в чем причина такого поведения.

рони
11.07.2015, 12:39
jasper-blondin,
тут скорее нужен специалист по css или желающий препарировать ваш скрипт, делайте макет с локализацией проблемы, может подскажут решение.

рони
11.07.2015, 12:45
jasper-blondin,
как вариант я делал сразу после анимации исправление css hide(100).css(нужные параметры); вместо hide(100, callback(нужные параметры) ) - если это не влияло на анимацию, потому что после начала анимации сss уже не больше не дополняют.

jasper-blondin
11.07.2015, 12:51
Вобщем, нужно укротить свое любопытство и довольствоваться тем, что все работает.

Спасибо за дискуссию!