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

#jquery #css

#jquery #css

Вопрос:

Я хочу создать меню, подобное этому, и производительность для меня очень важный фактор. До сих пор я сталкивался с двумя разными подходами, Javascript и CSS, и мне трудно понять, каким путем мне следует идти. Какой из них является более быстрым и облегченным подходом?

Мой веб-сайт работает с Javascript, но единственное, что мне интересно, это то, что если я выберу подход CSS, могу ли я каким-то образом заставить его работать таким образом, чтобы, если у пользователя отключен Javascript, ему / ей отображалась статическая страница?

Я объясню свой вопрос на примере. Предположим, у меня есть DOWNLOAD кнопка в моем меню. Если у пользователя есть JS, загружаемое содержимое должно отображаться на той же странице с помощью jQuery, но если у пользователя отключен JS, нажатие на пункт меню должно привести пользователя на download.php страницу.

Кстати, если существует бесплатное решение предлагаемого вами подхода, пожалуйста, предоставьте ссылку на него. Спасибо.

Ответ №1:

Меню CSS сложнее в использовании, чем JS: подменю мгновенно скроется, если курсор мыши отклонен на 1 пиксель даже на 1 мс. Вы можете добавить задержку в 100 или 200 мс в меню JS и допустить небольшие ошибки при перемещении ваших посетителей. Не все геймеры в совершенстве владеют мышью 😉

Так называемые «мега выпадающие» меню, возможно, лучше, чем приведенный вами пример. В Интернете сложно перемещаться по вертикали, а затем по горизонтали (и даже на рабочем столе это используется только для функций, к которым редко обращаются в программном обеспечении. Только мы, веб-разработчики и веб-дизайнеры, с легкостью проходим через эти сложные меню :)); выпадающий список mega отобразит посетителю целые ссылки с приятными заголовками.

Возможно, вам также захочется рассмотреть меню, которые отображают подменю при нажатии (т. Е. После того, как пользователь нажал на главную ссылку), если ваш сайт должен быть прост в использовании на смартфонах.

РЕДАКТИРОВАТЬ: я должен был добавить эти ссылки без вашего запроса о них, но не смог найти вторую (теперь она у меня в закладках, спасибо :))

Комментарии:

1. Не могли бы вы, пожалуйста, предоставить мне ссылку или простой пример? Я немного новичок в мире Интернета.

2. Конечно, я добавил 3 соответствующие ссылки

3. Большое вам спасибо. Я думаю, что лучший подход — объединить этот метод с тем, который представлен в нескольких других ответах (например, в psr).

4. @Felipe Alsacreations — удивительно, что я на самом деле не вижу никаких рекомендаций для фактического кода или плагинов jquery во всех этих примерах

Ответ №2:

Вы могли бы использовать меню на основе css, которое начинает отображаться, а затем использовать JS, чтобы скрыть его как можно быстрее. Или вы могли бы даже заменить его другим стилем меню, который опирается на JS.

CSS работает быстрее и легче по весу . JS более гибкий. Гибрид имеет самый тяжелый вес.

Комментарии:

1. Ну, это как бы упоминается в самом моем вопросе. Но мой вопрос в том, какой подход быстрее / лучше и могу ли я использовать гибридный метод (который поддерживает как JS-совместимые, так и отключенные клиенты)

2. @AlirezaNoori — Я говорю, что вы можете создать гибрид, используя чистый метод CSS. Затем используйте javascript, чтобы скрыть метод чистого CSS и реализовать метод JS. Это работает в обоих случаях.

3. Спасибо. Можете ли вы привести краткий пример?

4. @AlirezaNoori — Разумная просьба, но сейчас я не могу. Не уверен, что я в конечном итоге доберусь до этого в любое разумное время. Если меня не осыплют голосами за ответ, я пойму.

Ответ №3:

Хорошая причина узнать о прогрессивном улучшении. Используйте как CSS, так и JS!

Вы должны создать функционирующее базовое CSS-меню для того очень небольшого процента людей, которые не используют javascript, а затем использовать его с помощью JS, чтобы получить то, что вы хотите.

Это не только хорошо для доступности, но и создаст более надежный код без ошибок, поскольку вы гарантированно вернетесь к чему-то функционирующему (большую часть времени).

Ответ №4:

Лучший вариант — использовать чистый css для достижения желаемого эффекта. Таким образом, вам не придется полагаться на то, что js включен. примерно 30-50% пользователей просматривают веб-страницы без включения js, пока это им не понадобится, по крайней мере, исходя из моего опыта и сайтов, которые я поддерживаю.

Ответ №5:

Ваш CSS должен скрывать дочерние подменю по умолчанию, и каждый из элементов верхнего уровня должен ссылаться на страницу, которая позволяет мне получить доступ к элементам, которые обычно находятся в этом меню.

Например, если у вас был пункт меню под названием Cats , а дочерними элементами являются различные породы кошек, то на вашей странице верхнего уровня (/cats /) также должны быть ссылки на породы.

Вкратце: меню верхнего уровня в идеале должно ссылаться на индекс того, что находится в дочернем меню. Таким образом, тот, кто нажимает на меню, все равно получит доступ к содержимому меню, независимо от того, есть у него Javascript или нет (или он использует iPad, который отличается необычностью с меню и тому подобным)