Коли завдання можна виконати або через Javascript, або CSS, чи краще використовувати CSS? [зачинено]


11

Я завжди ветую JavaScript, використовуючи CSS якомога більше.

тобто я створюю вкладки та кнопки перекидання за допомогою CSS, а не JavaScript.

Я бачив деякі рішення - конкретно веб-рамки Wt - які виступають за JavaScript; але витончено перейдіть до CSS, якщо браузер не може / js-вимкнено.

Я знаю, що CSS та JavaScript мають різні цілі, однак є перекриття; що є бурхливим у цьому питанні.

Чи варто продовжувати використовувати CSS якомога більше через JavaScript?

Відповіді:


10

Так.

Метою CSS є компонування, зовнішній вигляд та анімація

Мета JavaScript - це взаємодія.

Якщо ви робите макет, використовуйте CSS, якщо ви встановлюєте зовнішній вигляд і використовуйте CSS, якщо для анімації ви використовуєте CSS3

Якщо ви додаєте обробники подій або реагуєте на введення користувача, використовуйте JavaScript.

Зауважте, що люди використовують JavaScript замість CSS для підтримки браузера. Є й інші рішення, як емуляція функцій CSS за допомогою JavaScript.


1
Мені подобається багато функцій, реалізованих у CSS3, однак підтримка веб-переглядача була повільною, і мені все одно потрібно полегшити застарілі браузери. Інакше я б використав HTML5 і для перевірки введення даних: P
AT

javascript не використовується тільки для взаємодії. Він також може бути використаний для повернення даних на веб-сервер та багато інших речей.
eriawan

Взаємодія @eriawan може бути невиразним терміном. але JavaScript в основному робиться x при взаємодії з користувачем, де x є довільним
Raynos

12

Ну, це насправді досить цікаве питання. Я намагаюся подумати про те, як би ви навіть зробили орієнтир на щось подібне, тим більше, що більшість часу ні CSS, ні JavaScript не роблять справді обчислювально важкі речі на веб-сторінці.

Моє відчуття кишечника сказало б, що використовуйте CSS якомога більше, але не перетворюйте це на жорстке і швидке правило.

a:hover {
  background-color: green;
}

тоді краще семантично

$('a').onmouseover(function() {
  $(this).css('background-color','green');
})

АЛЕ

$('a').onmouseover(function() {
  if (somethingelsehappened) {
    $(this).css('background-color','green');
  }
})

було б важко (хоча і не неможливо) у CSS. Ви могли це зробити таким чином.

$('a').onmouseover(function() {
  if (somethingelsehappened) {
    $(this).addClass('Green');
  }
})

a.green {
  background-color: green;
}

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

** Зверніть увагу, що жоден з цього коду не очікується, він призначений лише для демонстрації. **


3
Добре сказано, але для вашого другого прикладу я також не вагаюся, щоб використовувати (краще названий) клас CSS. Існує певне перекриття між ними з точки зору презентації та поведінки, але в цих прикладах це досить просто - поведінка змінює зовнішній вигляд на миші, зовнішній вигляд описано в CSS.
sevenseacat

3

Подумайте, чи будете ви наступне з мережі розробників Yahoo :

"Після скорочення цифр ми виявили постійну кількість запитів, відключених JavaScript, коливаючись близько 1% від фактичного відвідувача відвідувачів, причому найвищий показник становить приблизно 2 відсотки в США, а найнижчий - приблизно 0,25 відсотка в Бразилії. Усі інші тестовані країни показали, що цифри дуже близькі до 1,3 відсотка ".

З настільки низькими відсотками (як максимум) здається, що навряд чи варто (якщо тільки користувачі ваших веб-сайтів не надто 2%) турбуватися про випадок вимкнення JavaScript. Пересічний користувач не знає, як вимкнути javascript і, ймовірно, це не хвилює. Якщо ви розробляєте технологічний веб-сайт, ви можете розглянути можливість того, що у них буде відключений javascript, однак якщо вони, ймовірно, використовуються для веб-сайтів, які не працюють належним чином, оскільки багато веб-сайтів активно використовують JavaScript.

Незважаючи на це, я знайшов багато випадків, коли розробка Javascript робить те, що я намагаюся зробити набагато простіше, та інші випадки, коли css робить те саме.

Зрештою, кожна "мова" має своє відповідне місце у веб-розробці та розумно використана може покращити як розробку, так і досвід користувачів. Дізнайтеся, що таке використання (я рекомендую досвід навчання) та застосовуйте розумно. На мій досвід, встановлені в кам'яних правилах, такі як "Ніколи не використовуйте JS, коли існує рішення CSS" (перефразоване), рідко є найкращим у практичному світі.


Дякую за це, дуже інформація. Чи можете ви розширити свій четвертий абзац?
АТ

3
CSS - це інструмент "стилізації", а Javascript - "інтерактивність". Я виявив, що набагато простіше зробити випадаючі меню, наприклад, стилі з CSS, але анімовані javascript. Чи можете це зробити з css? так. Ви можете забити цвях за допомогою шуруповерта? так. Для зворотного прикладу, якщо все, що вам потрібно зробити, - це зміни кольору посилання, коли миша переходить через посилання, то, ймовірно, трохи надмірність використання Javascript для цього, коли є CSS-елемент, спеціально призначений для цієї мети. Чи можете ви це зробити з Javascript? Так ... Чи можете ви вбити павука кувалдою? Так ...
Кеннет

2

JavaScript - це справжня комп'ютерна мова, що означає стан та контроль виконання програми. Таким чином, немає верхньої межі того, наскільки складним він може стати, і все, що ви пишете в ньому, повинно мати істотний мінімум складності. CSS - це описовий код; її складність обмежується рівнем складності, який може мати рецепт. Тому, якщо щось можна зробити і в CSS, і в JavaScript, я б скоріше скористався CSS, оскільки він, мабуть, менш складний.


1
"якщо щось можна зробити за допомогою CSS, а не JavaScript, я б набагато скоріше використовував CSS, оскільки він, мабуть, менш складний" ... Як ви розумієте? Це дійсно залежить від того, що ви намагаєтеся зробити, чи буде це складніше в JS vs CSS ...
Кеннет

Як я вже сказав, державна програма з контролем виконання повинна бути надзвичайно складною, ніж будь-який рецепт.
Майк Накіс

наприклад: мені здається, що набагато складніше робити випадаючі меню в css, оскільки вам доведеться зробити так багато налаштувань і додати багато додаткових елементів html просто для того, щоб він працював у звичайних браузерах, а потім, якщо ви хочете, щоб він працював у старих або ще потрібні бродячі браузери (IE тощо). За допомогою JavaScript потрібно декілька простих рядків коду, щоб анімувати його декількома рядками css, щоб стилізувати його.
Кеннет

Звичайно, само собою зрозуміло, що "потрібен розсуд програміста". Якщо це неможливо зробити в CSS або якщо це не доцільно через несумісність браузера, тоді, безперечно, слід віддавати перевагу JavaScript. Моя відповідь більше стосується академічної сторони речей, а не прагматичної сторони.
Майк Накіс

Питання швидкої сторони (тільки для цієї відповіді): Чи підтримує IE6 таку ж версію JavaScript, що і сучасні браузери? - Цим я маю на увазі абстрагувати відібрану інформацію, тому мені не потрібно турбуватися про специфічні для браузера "стандарти".
AT

1

Javascript - це сценарій мови, тобто він має можливість додати певну логіку. CSS використовується для опису вигляду та стилю документа. Він був розроблений головним чином для відділення структури документа від форматування та компонування (презентації).

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


Вікіпедія:

Використання Javascript:

  • Відкривання чи спливаюче нове вікно з програмним керуванням розміром, положенням та атрибутами нового вікна (наприклад, чи видно меню, панелі інструментів тощо).
  • Перевірка вхідних значень веб-форми, щоб переконатися, що вони прийнятні, перш ніж надсилатись на сервер.
  • Зміна зображень під час переміщення курсору миші: Цей ефект часто використовується для привернення уваги користувача до важливих посилань, відображених у вигляді графічних елементів.

ОНОВЛЕННЯ. Щодо третього пункту, W3C говорить про CSS:

:hoverПсевдо-клас застосовується , коли користувач позначає елемент з вказівним пристроєм, але не обов'язково активувати його. Наприклад, візуальний користувальницький агент може застосувати цей псевдоклас, коли курсор (вказівник миші) наводить курсор на поле, породжене елементом.


Використання CSS:

До CSS майже всі презентаційні атрибути документів HTML містилися в розмітці HTML; всі кольори шрифту, стилі тла, вирівнювання елементів, межі та розміри повинні були чітко описуватися, часто повторно, у межах HTML. CSS дозволяє авторам перенести велику частину інформації на окремий аркуш стилів, що призводить до значно простішої розмітки HTML.


1
"Зміна зображень, коли курсор миші переміщається по них. Цей ефект часто використовується для привернення уваги користувача до важливих посилань, що відображаються як графічні елементи." - Це не особливість CSS?
AT

@AT Так, ти маєш рацію (+1), і дякуємо за те, що підняли це. hoverПсевдо-клас має цю мету. Я просто цитував. Відредаговано.
pferor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.