vitaly_74, А ваша беда в том, что вы болезненно воспринимаете конструктивную критику. Это плохо. Для вас, конечно же.
Касаемо моего ответа на вопрос. Я и не собирался его писать, хотя знаю и мог бы ответить. Вообще я собирался просто закрыть вкладку с вашим криво оформленным вопросом как и в большинстве таких случаев, но 1) увидел комменты и поддержал ранее высказавшихся товарищей и 2) захотелось вам как-то помочь на будущее, но вы добрый совет не восприняли.
Опять же ссылка на сайт. почему ее было не сделать нормальной ссылкой? Так нужно выделить, скопировать, открыть вкладку, вставить.
Мне-то конечно пофиг, я просто мимо прохожу больше половины таких вопросов (ссылки на картинки вместо картинок, скрины всего экрана вместо нужной области, картинки кода вместо кода, неоформленный код и т.д.).
Но вы сами себе уменьшаете шансы на ответ или на более быстрый ответ, ведь не я один мимо пройду.
sorry_i_noob, на первый вопрос отвечу легко: потому что их пишут такие же люди, которые недавно искали ответы на свои вопросы.
На второй вопрос не отвечу совсем. Учитесь думать "во времени", а что будет если условия изменятся, если заказчик скажет "хочу вот так теперь чтобы было". Как быстро вы сможете адаптировать то, что написали, под пока еще неизвестно что.
Сложно. Знаю. Возможно это даётся только с опытом. Возможно есть умные книжки, которые дадут толчок в нужном направлении.
sorry_i_noob, не совсем понял, как вы пришли к этому выводу, но в общем-то, да. я так и пишу. вы видите в этом проблему? я нет. зато при необходимости я легко методом копипасты переношу куски кода из проекта в проект практически без правок. Или даже оформляю как npm-пакет.
А если у меня действие (результат нажатия. точнее, JS код, который срабатывает при нажатии) для кнопки уникально.
Если вы пишете говносайт, про который никто и не вспомнит через пару месяцев — можете вообще писать как угодно.
Во всех остальных случаях вы не можете на сто процентов быть уверены в уникальности действия в долгосрочной перспективе.
Вот еще пример https://codepen.io/delphinpro/pen/dWpxjg
Несколько замечаний.
Использован jQuery, но без animate, только операции добавления/удаления классов и стилей. Легко заменяется на ванильный жс.
Использованы CSS переходы, никаких анимаций в самом джаваскрипте. Легко можно менять стиль анимации через тайминг-функцию.
Анимируется свойство max-height, значение которого вычисляется.
Не применяется display:none, что немного упрощает получение реальной высоты блока.