Каковы best practices при вёрстке мега меню и мобильного меню без дублирования кода?
Собственно, сабж. Задача типовая: сверху sticky меню строчкой. При ховере на пункту меню выпадают подпункты с картинками, формами и т. д. Реализовать адаптивом. Посмотрел немало примеров на крупных и модных сайтах. Везде для мобильного меню дублируется код навигации с другими стилями. Мобильное прячут на десктопе и десктопное на мобилах. Но при этом все эти огромные списки ссылок в коде страницы остаются, дублируются. А это как-то не рационально, да и с точки зрения СЕО не совсем хорошо. Там что-то с математикой распределения весов происходит.
Вопрос: есть ли пример успешной вёрстки Мега меню так, чтоб оно же было мобильным?
Применить те же стили, которые для мобильного через media для одного куска кода.
Дублировать могут потому что не могут перенести/спозиционировать его в нужное место на мобилках.
Тут нужно смотреть конкретные макеты и придумывать как сделать без дублирования.
В любом случае можно переместить на JS без дублирования.
проблема может быть
1)в дизайне или в коде нафигачено такого, что проще отдельно - например, вложили на десктопе так, что на мобильной потом уже и не вытащищь куда надо.
2) если дизайн постоянно меняется - тогда точно проще делать отдельно.
3) Или если сделано на абы как - тогда тоже проще отдельно.
а в остальном, если сам делаешь то проблемы нет, все верстается нормально. все лишнее десктопное (кроме названия пункта) заворачиваешь в враппер и скрываешь
адаптивность подразумевает то, что верстка должна быть рассчитана скорее на определенный диапазон разрешений, а не на "все в одном", поэтому оптимальный вариант - сверстать отдельную версию для мобильных устройств т.е. под разрешения менее 700-800px. это займет меньше времени в плане разработки/тестирования и позволит ускорить загрузку сайта т.к. ассеты будут разделены
У меня не реактивный фронт, просто адаптив с небольшим js. Поэтому собственно и есть эта сложность. А грузить всю навигацию по аяксу как-то неправильным кажется.
Согласен с мнением человека выше, рациональнее всего сделать два меню, под мобильную и десткопную версию, практически нет добротных кейсов на 2е версии сразу