Тема оформления mini-app под клиент Telegram
Подстроишь цвета Mini App под тему Telegram через themeParams и CSS-переменные.
Тема клиента Telegram
Telegram передаёт в Mini App текущую тему пользователя: светлая/тёмная и палитра (themeParams). Те же цвета доступны как CSS-переменные --tg-theme-*. Задача — не хардкодить #ffffff / #000000, а опираться на эти токены, чтобы UI совпадал с чатом.
При смене темы в настройках Telegram клиент шлёт событие themeChanged — можно перекрасить интерфейс без перезагрузки.
CSS-переменные и themeParams
Подписка на смену темы и синхронизация header/background с клиентом:
Как это работает
--tg-theme-bg-colorи др. — клиент выставляет на:rootпри загрузке скрипта.themeParams— тот же набор в JS (bg_color,text_color,button_color, …).colorScheme—"light"или"dark"; удобно для своих ассетов (иконки).themeChanged— событие при смене темы в Telegram.setHeaderColor/setBackgroundColor— красят хром WebView, не только твойbody.
Частые ошибки
Фиксируешь белый фон в CSS → в тёмной теме «белая дыра». Всегда var(--tg-theme-bg-color, fallback).
Красишь только body, забывая header WebView → шапка Telegram другого цвета. Вызови setHeaderColor / setBackgroundColor.
Игнорируешь themeChanged → после переключения темы в настройках UI остаётся старым, пока не переоткроешь Mini App.
Что дальше
- MainButton и BackButton — нативные кнопки тоже берут цвета из темы
- Деплой mini-app и HTTPS — выкладка статики с CSS
- CloudStorage API — сохранение пользовательских настроек поверх темы
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация