Toasty!

Тот самый парень из правого нижнего угла. Выбери версию и выпусти его на экран.

Один JS-файлБез зависимостейКартинки и звук внутри

Готов к выходу из-за края экрана.

Твой вызов · настройки из демо
import toasty from './toasty.mjs';

toasty();

Один модуль. Без jQuery и отдельных загрузок картинок или звука при появлении. Звук включается после клика; если браузер его блокирует, персонаж всё равно появляется.

ПАРА СТРОК — И ОН У ТЕБЯ

Добавь Toasty на свой сайт

Подойдёт обычная HTML-страница, PHP-шаблон или проект на JavaScript. Никаких пакетов и сборки: подключи модуль и вызови toasty().

  1. Скопируй код ниже в HTML своей страницы перед </body>.
  2. Открой страницу и нажми кнопку «Toasty!». Модуль загрузится с toasty.geekchain.io.
Готовый пример · HTML / PHP

Пример использует выбранные выше персонажа, размер и звук. Если обработчик клика у тебя уже есть, импортируй модуль в свой JS и вызови функцию из него.

Один вызов. Несколько трюков.

Показывай персонажа после действия пользователя или оставь появление на волю случая.

Выбрать персонажа
toasty();             // Оригинал, 180 px, со звуком
toasty('enhanced');    // Улучшенная версия
toasty('random');      // Случайно одна из двух
Случайные появления
// После импорта, в обработчике клика:
const stopRandom = toasty.random({
  character: 'random',
  minDelay: 15000,  // Не раньше чем через 15 секунд
  maxDelay: 45000,  // Не позже чем через 45 секунд
});

// Когда захочешь остановить:
// stopRandom();
// toasty.stop();  // Убрать уже появившегося персонажа
НастройкаЧто делает
character'original', 'enhanced' или 'random'. По умолчанию — оригинал.
sizeШирина картинки в пикселях. По умолчанию 180 — исходный размер без увеличения.
soundfalse, чтобы показывать без звука. По умолчанию true.
volumeГромкость от 0 до 1. По умолчанию 1.
durationВремя от появления до исчезновения в миллисекундах. По умолчанию 1000.

Ещё пара деталей

Почему иногда нет звука?

Браузер может запрещать звук до первого клика или тапа. Запускай toasty() или toasty.random() из обработчика клика. Для своего таймера можно заранее вызвать toasty.unlockAudio() при клике. Если звук всё равно заблокирован настройками браузера, анимация продолжит работать.

Можно вызвать из обычного скрипта или onclick?

Да. Внутри <script type="module"> после импорта добавь window.toasty = toasty;. После загрузки модуля функция доступна глобально — например, onclick="toasty('enhanced')".

Как проверить скачанный файл локально?

Запусти в папке со страницей python3 -m http.server 8000 и открой http://localhost:8000. ES-модулям нужен HTTP-сервер: открытие HTML двойным кликом через file:// не подходит.

Что нужно настроить на хостинге?

Файл .mjs должен отдаваться с типом text/javascript или application/javascript. Для подключения с других доменов серверу нужен заголовок Access-Control-Allow-Origin: *. Если изменить настройки нельзя, скачай модуль и подключай со своего домена. При строгой CSP разреши источник модуля и встроенные изображения data:.