RadiationX
@RadiationX
Front-End разработчик

Почему для каких-то действий используют JS а не label+checkbox/radio?

На практике частенько применяю для всяких действий на странице(раскрывающиеся меню и т.д) label+checkbox или radio, т.е средствами html и css. Вроде это поддерживают все браузеры, даже ie5.
Вот простой пример. Реализуется всё просто, немного селекторов и всё готово.
Но для всяких подобных действий часто используют js, почему?

Собсно интересно в чем минус первого способа, и почему его стоит/не стоит использовать?
  • Вопрос задан
  • 2696 просмотров
Пригласить эксперта
Ответы на вопрос 3
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
В таком способе есть особенность — при построении из JS структуры нужно динамически формировать правила. Мне кажется, что многие начинают сразу с jQuery, не зная нативного JS и не умея пользоваться его возможностями.

Пример — стоит попросить кого создать на ходу правила при динамическом формировании элементов, и тут же в ответ увидишь удивлённые глаза.
Другой пример — ощущение, что про 3 фазы событий знает не так много людей, как хотелось бы. На вопрос, можно ли при клике на элементе обработать его в document так, что до этого элемента оно так и не дойдёт — ещё более круглые глаза... Когда объясняешь человеку, что его onclick вообще никогда не сработает, не верит.

Так что делайте как удобно, но не рассчитывайте, что вокруг будут делать как лучше. Тенденция — делать как проще и с наименьшими затратами. Знания библиотек становится более значимым, чем знания основ.
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
#ch1:checked ~ .d1 .s1
А если таких 50 будет? Для каждой ручками css прописывать будете?
На js более универсально в любом случае.
Ответ написан
keksmen
@keksmen
Just a programmer
Всё-таки вопрос не верно сформулирован. Вы спрашиваете "Как лучше? С помощью HTML/CSS или JS?". Юмор в том, что это не какие-то "противоположности". JavaScript повсеместно используют СОВМЕСТНО с HTML и CSS.

Предположу, что вы имели ввиду стандартные html-элементы и блоки, которые имитируют их поведение. Первые создаются при помощи обычной разметки и стилей, вторые же - при помощи JavaScript-логики, которая и позволяет им вести себя так.

Всё дело, на самом деле, во вкусах. Одни просто хотят так делать по каким-либо причинам, другие просто привыкли.
В пользу второго подхода приведу несколько аргументов:
1. Стандартные элементы имеют некоторые ограничения, которые видимо не всем нравятся.
2. Стандартные элементы могут вести себя по разному в разных браузерах. Пример: св-во placeholder у input. Созданные же с помощью "JavaScript-магии" элементы ведут себя ровно так, как вы заколдуете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы