Мегаменю не работает одинаково во всех браузерах и ломает отзывчивость

У меня очень странная проблема с моим сайтом-портфолио. В браузере Google Chrome все работает гладко, проблем нет. Но в других браузерах, таких как Firefox, Microsoft Edge, Opera Mini, мегаменю нарушает отзывчивость.

https://www.nockscript.com/ Перейдите на веб-сайт, вы найдете меню под названием My Создание наведите на него с помощью браузера Chrome и проверьте предварительный просмотр. Сделайте то же самое с Firefox или Microsoft Edge, и вы поймете, в чем проблема.

Примечание. Я использую платформу WordPress. Это мегаменю создано по умолчанию. Я хочу, чтобы предварительный просмотр мегаменю отображался во всех браузерах так же, как в браузере Chrome.


person Arefin Babu    schedule 13.10.2020    source источник


Ответы (2)


В хроме javaScript устанавливает ширину мегаменю на 100% доступного размера экрана. Но по какой-то причине это не работает в Firefox.

Поскольку у вас включены плагины кеша, отследить проблему в минифицированных js-файлах непросто. Но наверняка проблема именно в этом файле:

нейрон-ядро-киото/активы/скрипты/элементор_{что-то}.js

Вы должны сначала отключить кеш и минифицировать, а затем найти этот код внутри вышеуказанного файла:

$subMenu.css({width:width,left:offset})

Затем проследите, каково значение ширины и смещения, а также проверьте, работает ли этот фрагмент кода в FireFox или нет.


Обновление:

Я проверил ваш код. Он пытается рассчитать ширину страницы следующим образом:

var width=$elementorContainer.outerWidth()-columnPadding*2

Проблема создается columnPadding, который извлекается с помощью следующего кода:

columnPadding=parseInt($menu.parents('.elementor-column-wrap').css('padding'))

Проблема в том, что когда вы получаете css('padding') в Firefox, он возвращает "", а в Chrome возвращает "0px". Затем parseInt преобразует его в NaN в Firefox и 0 в Chrome. Таким образом, код CSS не применяется в FF.

Я изменил отступ, чтобы проверить, связана ли проблема с отступом 0, но его поведение не изменилось в Firefox. Дело в том, что css('padding-top') или padding-left, padding-right, padding-bottom нормально работают в Firefox.

Я проверил это и на других сайтах, и там происходило то же самое.

Я также нашел:

https://github.com/jquery/jquery/issues/3383

person ImanGM    schedule 13.10.2020
comment
Эти коды не работают, и я деактивирую плагин WP ROCKET, который работал для минимизации. Не могли бы вы узнать точную проблему сейчас? - person Arefin Babu; 13.10.2020
comment
@ArefinBabu Ну, я все еще вижу кешированную версию, но понял, в чем проблема, и обновил свой ответ. Взгляните на это. Вы можете изменить код css('padding') на css('padding-left') или вычислить значение в другой функции, а затем использовать его в своем коде. Конечно, ваш отступ равен 0, вы даже можете заменить columnPadding на Zero. Кроме того, поскольку вы используете премиальную тему, вы можете сообщить об этом автору темы и попросить его обновить код внутри своей темы. - person ImanGM; 13.10.2020

Вам нужно удалить position: relative; для следующих классов и вместо этого установить position:unset:

.elementor-element-f666f66,
.elementor-element-f666f66 .elementor-column-wrap,
.elementor-element-f666f66 .elementor-column-wrap .elementor-widget-wrap,
.elementor-element-f666f66 .elementor-column-wrap .elementor-widget-wrap .elementor-widget{
    position: unset !important;
 }
 .m-nav-menu--horizontal ul li.menu-item.menu-item-has-children > ul.sub-menu{
    top: 0 !important;
 }

Так что на самом деле firefox соблюдает правило положения относительно ширины контейнера.

person MaxiGui    schedule 13.10.2020
comment
К сожалению, эти коды почему-то не работают :( у вас есть другие решения? - person Arefin Babu; 13.10.2020
comment
@ArefinBabu, это было плохо, я написал последнее position: unset; неправильно. Попробуйте еще раз с моей правкой. Я написал: .element-f666f66 .elementor-column-wrap .elementor-widget-wrap .elementor-widget вместо .elementor-element-f666f66 .elementor-column-wrap .elementor-widget-wrap .elementor-widget Так что это было elementor в начале - person MaxiGui; 13.10.2020
comment
Я добавил обновленный код, но в другом браузере ничего не происходит. В браузере Chrome меню переместилось на левую сторону, что тормозило отзывчивость браузера Chrome. Посетите веб-сайт, чтобы увидеть предварительный просмотр, я все еще храню коды - person Arefin Babu; 13.10.2020
comment
@ArefinBabu css не обновлялся, вроде тоже самое с точно такой же ошибкой - person MaxiGui; 13.10.2020
comment
НЕ ПРЕДЛАГАЙТЕ ЭТО в Интернете. - person MaxiGui; 13.10.2020
comment
Можете ли вы нажать это с обновлением кода, вот так я мог видеть результат - person MaxiGui; 13.10.2020
comment
У вас есть другое решение, например, как я могу это исправить? - person Arefin Babu; 13.10.2020
comment
Я все еще пытаюсь разобраться в проблеме! Ничего не работает - person Arefin Babu; 13.10.2020
comment
Даже с применением .elementor-element-f666f66 .elementor-column-wrap .elementor-widget-wrap .elementor-widget{ position: unset !important; } ? - person MaxiGui; 13.10.2020
comment
Я решил решение с помощью этих кодов, но это создало новые 4 проблемы! .elementor-21285 .elementor-element.elementor-element-6ac0082 nav › ul li.menu-item-has-children ul.sub-menu{ margin-top: 31px !important; переполнение: скрыто !важно; } .elementor-21285 .elementor-element.elementor-element-6ac0082 nav › ul li.menu-item-has-children ul.sub-menu{ ширина: 1290 пикселей !важно; справа: -267px !важно; } ul.sub-menu.m-mega-menu-holder{ left: auto !important } Так что я думаю, что это не профессиональный способ исправить ошибку! - person Arefin Babu; 13.10.2020
comment
Пожалуйста, обновите свои сообщения с 4 проблемами, так как это нечитабельно в комментарии. (Профессионал не будет использовать wordpress.) - person MaxiGui; 13.10.2020
comment
Ха-ха, да, профессионал не будет использовать WordPress, но я не знаю, почему я люблю WordPress. В любом случае, я использую премиальную тему и пытаюсь связаться со службой поддержки. Должно быть, это баг темы. В любом случае, большое спасибо за вашу помощь #MaxiGui - вы старались изо всех сил :) - person Arefin Babu; 13.10.2020
comment
Я сделал все возможное с живым веб-сайтом - person MaxiGui; 13.10.2020