TGViewer
Glo Academy Glo Academy @glo_academy · 3.77K subscribers
Post #2730 331
✂️ Состояние элемента в атрибуте вместо трёх классов

classList.add('loading'), потом add('error'), где-то забыли снять — и на элементе одновременно висят loading и completed. Какой стиль победит, решает порядок правил в файле. Вместо трёх классов держи состояние в одном data-атрибуте:

<div class="order" data-state="loading">…</div>

order.dataset.state = 'completed';

.order[data-state="loading"] { opacity: 0.5; }
.order[data-state="error"] { border-color: red; }
.order[data-state="completed"] { border-color: green; }


У атрибута всегда одно значение: новое вытесняет старое, двух состояний сразу не бывает. Из JS оно меняется одной строкой через dataset.state, а CSS цепляется за него селектором [data-state="…"].

На гифке: клик по вкладке пишет новое значение в атрибут, и карточка заказа перекрашивается сама.

Селектор сравнивает значение целиком. Если в атрибут попадёт «loading completed», не сработает ни одно правило — поломку видно сразу.

❤️ — если было полезно

@glo_academy | #snippets
  • ❤ 8
More from @glo_academy
  1. Sep 29, 2026✂️ Шрифт как в нативном приложении без загрузки файлов Подключаешь красивый шрифт с сервер…
  2. Sep 28, 2026🎨 Звёздочка у обязательного поля озвучится словами Ставишь звёздочку у обязательного поля…
  3. Sep 26, 2026📐 Лендинг жилого комплекса Макет средней сложности без адаптива на русском языке @glo_aca…
  4. Sep 25, 2026⚡ Одна строка разлогинит все вкладки сайта Нажал «Выйти», а в соседней вкладке всё ещё отк…
  5. Sep 24, 2026🧰 pico Нужна страница входа или админка для пет-проекта, а возиться со стилями полей и кн…
  6. Sep 23, 2026😎 @glo_academy
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →