← Все вопросы

Как управлять стилями элемента через JavaScript?

Задан 18 месяцев назад533 просмотров2 ответа
7

Нужно по клику менять цвет, скрывать/показывать блок, добавлять подсветку. Понимаю, что это делается из JS, но не уверен, через что правильнее — напрямую style или как-то через классы?

2 ответа

15
✓ Принятый ответ — помог автору

Есть два основных подхода, и второй обычно предпочтительнее.

1. Напрямую через element.style — меняем инлайновые стили:

const box = document.querySelector('.box');
box.style.color = 'white';
box.style.backgroundColor = '#6366f1'; // camelCase вместо background-color!
box.style.display = 'none';

Минус: свойства через дефис пишутся в camelCase, а стили лезут прямо в разметку.

2. Через classList — переключаем классы, а оформление держим в CSS. Это чище:

.active { background: #6366f1; color: white; }
.hidden { display: none; }
box.classList.add('active');
box.classList.remove('hidden');
box.classList.toggle('active');           // вкл/выкл
box.classList.contains('active');         // проверка

Правило: разовая динамическая величина (например, left при перетаскивании) — style. Любое «состояние» (активна/выбрана/скрыта) — classList + класс в CSS. Так логика и оформление не перемешиваются.

5

Ещё момент про чтение стилей: element.style.color вернёт значение, только если оно задано инлайново. Чтобы узнать итоговый вычисленный стиль (например, из CSS-файла), используй:

const color = getComputedStyle(box).color;

Новички часто удивляются, почему box.style.width пустой, хотя ширина явно задана — она просто пришла из CSS, а не из атрибута style.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект