PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    Современный CSS: сложные UI-паттерны без единой строчки JavaScript

    Современный CSS: сложные UI-паттерны без единой строчки JavaScript

    Аватар автора Современный CSS: сложные UI-паттерны без единой строчки JavaScript

    Игорь Шестухин

    Иконка календаря16 февраля 2026
    Картинка поста Современный CSS: сложные UI-паттерны без единой строчки JavaScript

    Разберём три таких паттерна, которые ещё недавно требовали тонн JS-кода, а теперь закрываются парой атрибутов и стилей.

    Переключение цветовых тем через light-dark()

    Функция light-dark() и свойство color-scheme позволяют организовать поддержку светлой и тёмной темы на уровне CSS без создания отдельных файлов стилей.

    В корневом селекторе указывается color-scheme: light dark — браузер понимает, что страница готова работать в обеих темах, и подхватывает системные настройки пользователя. Все цвета определяются через кастомные свойства, куда передаётся light-dark(значение_для_светлой, значение_для_тёмной). Например, фон: background: light-dark(#f9f9f9, #1a1a1a).

    Для ручного переключения достаточно скрипта из нескольких строк, меняющего color-scheme на light или darkна корневом элементе. Но сам рендеринг цветов, подстановка значений, реакция на медиа-запрос prefers-color-scheme — всё это уже встроено в CSS.

    Модальные окна и всплывающие подсказки с Popover API

    Раньше любой попап требовал управления классами, фокусом и z-index. Теперь достаточно добавить элементу атрибут popover и связать его с кнопкой через popovertarget.

    По умолчанию поповер скрыт; при клике на кнопку он появляется поверх контента с автоматическим бэкдропом. Доступность зашита на уровне браузера — фокус автоматически перемещается внутрь, табуляция зацикливается, закрытие по Esc работает из коробки.

    Бэкдроп стилизуется через псевдоэлемент ::backdrop. Псевдокласс :popover-open позволяет добавлять анимации и менять оформление именно в открытом состоянии. Никакого JavaScript, чистый HTML+CSS.

    Аккордеоны с <details> и анимацией

    Тег <details> существует давно, но его сложно было анимировать при раскрытии. Современные браузеры позволяют управлять видимостью контента через атрибут open и плавно менять opacity или height.

    Достаточно скрыть содержимое по умолчанию (opacity: 0), а при наличии атрибута open сделать его видимым (opacity: 1) и добавить transition. Получается плавное появление/исчезание без единой строчки JS.

    В будущем появится псевдоэлемент ::details-content, который даст ещё более гибкое управление анимацией раскрытия. Пока поддержка ограничена, но базовый вариант работает во всех современных браузерах.

    Спойлеры и раскрывающиеся блоки через чекбокс

    Классический приём, ставший ещё элегантнее. Блок с кратким и полным описанием управляется скрытым чекбоксом и привязанной к нему меткой.

    По умолчанию длинный текст скрыт, виден только превью. При клике на метку чекбокс переходит в состояние :checked, через CSS-селектор :checked ~ .spoiler .spoiler-content длинный текст становится видимым, а превью скрывается.

    Текст самой кнопки меняется через псевдоэлемент ::after с content. Если чекбокс выбран, у метки прописывается content: "Скрыть", иначе — "Читать дальше". Никакого JavaScript, полная адаптивность.

    Итог Современные CSS и HTML закрывают огромный пласт интерфейсных задач, которые раньше считались прерогативой JavaScript. Светлые/тёмные темы, модальные окна, аккордеоны, спойлеры — всё это реализуется нативными средствами с лучшей производительностью и встроенной доступностью.

    Иконка глаза975

    Комментарии

    0

    Постройте личный план изучения TypeScript с нуля - полный курс и паттерны проектирования до уровня Middle — бесплатно!

    TypeScript с нуля - полный курс и паттерны проектирования — часть карты развития Frontend, Backend, Mobile

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    React и Redux Toolkit

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Zustand

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Neovim

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Иконка аватараАнтон
    Иконка календаря01 октября 2026
    AI-инструментыDevOpsразработка+ 2middleИконка уровня middle

    Gemini CLI в России: как установить и настроить

    Установить Gemini CLI из России можно без VPN и без ухищрений — это обычный npm-пакет, он скачивается и запускается на любой машине. Упирается всё на следующем шаге: 18 июня 2026 года Google перестал обслуживать запросы Gemini CLI для бесплатных аккаунтов и подписчиков Google AI Pro и Ultra, а единственный оставшийся путь — вход по API-ключу — требует биллинга в регионе, где Россия не числится. Ниже разбираем, как агент ставится, как устроены три способа входа, почему ни один из них не доводи...

    Иконка чипа0
    Иконка глаза163
    Иконка комментариев0
    Картинка поста Git флоу для команды разработчиков: гайд по веткам и релизам
    Иконка аватараАнтон
    Иконка календаря30 сентября 2026
    gitgit-flowкомандная работа+ 2middleИконка уровня middle

    Git флоу для команды разработчиков: гайд по веткам и релизам

    Git флоу для команды разработчиков: разбираем Git Flow, GitHub Flow и trunk-based development — как выбрать модель веток и избежать конфликтов при совместной работе.

    Иконка чипа0
    Иконка глаза125
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря29 сентября 2026
    AI-инструментыClaude CodeDevOps+ 2middleИконка уровня middle

    Бесплатный аналог Cursor и Claude Code в России

    Короткий ответ: бесплатных аналогов много, и почти все они ставятся в России без ухищрений — Cline, Kilo Code, OpenCode, Qwen Code, Codex CLI распространяются с открытым исходным кодом, и за сам инструмент никто денег не берёт. Проблема в другом: своей модели у них нет. Платите вы не за агента, а за модель, к которой он ходит, и блокируется из России именно доступ к модели. Поэтому вопрос «чем заменить Cursor и Claude Code» почти всегда оказывается другим вопросом — где взять доступ к сильной модели без зарубежной карты. Ниже разберём, что из бесплатного реально работает, где оно упирается в потолок, и во сколько обходится не искать замену вообще. {{IMAGE_1}} alt: Схема: бесплатные клиенты-агенты Cline, Kilo Code, OpenCode, Qwen Code и платный доступ к модели за ними prompt: Flat vector diagram on dark background, two clearly separated zones. Left zone labeled "free" contains five small rounded cards representing code editor agents with terminal and sidebar icons. Right zone labeled "paid" contains a single large cloud icon representing an AI model, with a lock badge. Arrows go from all five cards to the single cloud. Purple and violet accent colors, thin white lines, no text labels, clean minimal tech illustration, 16:9

    Иконка чипа0
    Иконка глаза412
    Иконка комментариев1
    Иконка чипа0