Задать вопрос
@bounce

Стоит ли реализовывать на CSS то, что можно реализовать на JS?

Видел в интернете довольно много разнообразных статей, описывающих реализацию многих элементов сайта (например, табы, аккордеон, слайдеры) на чистом CSS при помощи разнообразных селекторов без использования JS. Хотелось бы узнать мнение других по поводу правильности такого решения, ибо я сомневаюсь.
  • Вопрос задан
  • 311 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@Nwton
например, табы, аккордеон, слайдеры на чистом CSS при помощи разнообразных селекторов

Это извращения. Код должен быть оптимален во всех смыслах и плохо, когда вместо пары строк js, разработчик возводит кучу дополнительных классов и обложек.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
То что можно реализовать на CSS должно быть реализовано на CSS
JS по-хорошему должен лишь управлять классами элементов, ну может еще слушать события transitionend и animationend когда это необходимо
Ответ написан
Комментировать
Uwe_Boll
@Uwe_Boll
Я Злой и Страшный Уве Болл в Разработке знаю Толк
дополню ответ @bingo347
все зависит от того что в Т. З. по поводу < 11 осла написано
Ответ написан
Комментировать
NN-webmaster
@NN-webmaster
Обожаю веб
Хочу добавить, что, помимо прочего, важна масштабируемость. Например, в будущем, вы захотите сделать блоки с табами анимированными. Если они у вас сделаны на CSS, то это будет гораздо сложнее, нежели если бы они были сделаны на JS. Во втором случае вам придётся добавить 1-2 строки кода, в первом — переписывать классы, либо также добавлять к ним скриптовый функционал.

Так что, моё мнение: если CSS-реализация подчиняется закону Парето, либо мешает масштабируемости, либо настолько сложна, что для другого разработчика она будет неочевидна с первого взгляда, то делаем на JS.

Как пример, что можно сделать на CSS, но, тем не менее, я всегда делаю на JS: табы, аккордеон, слайдеры, выпадающие меню (P.S. в большинстве случаев, код для этих элементов заключается лишь в паре строк манипулирования классами).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы