- PVSM.RU - https://www.pvsm.ru -

Выпадающее меню в минимум строк на Javascript

Начало зимы встретило нас бумом статей о том как в N строк кода сделать какую-нибудь штуку на Javascript. Сначала несколько [1] решений [2] в 30 [3] строк, затем в 399 [4] символов. Апогеем стал код длинной в одну строку [5]. Мы с коллегами задумались, а можно ли сделать что-то полезное и использовать меньше кода?

Как ни странно, но да.

Для примера мы взяли выпадающее меню в одном из проектов и для начала убрали jQuery, переписав все на нативный Javascript. Затем долго и упорно, подобно настоящим форнтенд-ниндзя мы поэтапно уменьшали размер используемого Javascript кода. У некоторых не выдерживали нервы и они оставили попытки найти идеальный Javascript код, но тех кто дошел до конца ждала награда и просветление.

Получившийся код сочетает в себе достоинства, которые до этого момента считались несовместимыми.

А именно:

  • минимализм;
  • отсутствие зависимостей от сторонних библиотек;
  • бесконечно малая скорость работы и потребление памяти;
  • понятность любому разработчику;
  • простота интеграции и повторного использования.

Вот jsfiddle демо [6].

Чтобы все окружающие смогли воспользоваться плодами нашего труда, мы выложили код библиотеки на Github [7].

Мы пытались найти ошибки и недостатки нашего решения, но команда тестировщиков ни к чему не смогла придраться. Если вы обнаружите какую-нибудь ошибку или у вас есть предложения по оптимизации, смело открывайте issue или создавайте merge request.

Автор: KooL

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/48800

Ссылки в тексте:

[1] несколько: http://habrahabr.ru/post/202476/

[2] решений: http://habrahabr.ru/post/202684/

[3] 30: http://habrahabr.ru/post/202530/

[4] 399: http://habrahabr.ru/post/202852/

[5] одну строку: http://habrahabr.ru/post/202736/

[6] jsfiddle демо: http://jsfiddle.net/8xx8/4juJG/

[7] Github: https://github.com/Andrew8xx8/zero-menu

[8] Источник: http://habrahabr.ru/post/202916/