Код виджета гадания на таро

Жми на виджет гадания на таро и получи ответ от карт прямо сейчас! Таинственные арканы раскроют секреты и подскажут верный путь.

Что такое виджет гадания на Таро?

Виджет – небольшая интерактивная часть веб‑страницы, которую пользователь может разместить в любом месте сайта. Для Таро виджет обычно включает:

  • Кнопку «Тянуть карту»;
  • Область, где показывается изображение вытянутой карты;
  • Текстовое описание значения карты;
  • Опционально – возможность задать вопрос и получить расклад из нескольких карт.

Подобный функционал уже используется в популярных приложениях, таких как talking: таро гороскоп гадание, где пользователи могут быстро получить ответы от квалифицированных тарологов. Наш виджет будет работать автономно, без обращения к серверу, используя готовый набор данных о картах.

Требования к виджету

  1. Кросс‑браузерность – работает в современных браузерах (Chrome, Firefox, Safari, Edge).
  2. Лёгкость встраивания – достаточно добавить один <script> и один <div> на страницу.
  3. Отсутствие внешних зависимостей – чистый JavaScript без jQuery.
  4. Конфиденциальность – виджет не собирает и не передаёт пользовательские данные (соответствует требованиям Apple Privacy).
  5. Расширяемость – возможность добавить новые расклады, изменить стили, добавить анимацию.

Для работы виджета достаточно одного контейнера с идентификатором tarot-widget. Внутри он будет заполнен скриптом.

<!-- Блок, куда будет вставлен виджет -->
<div id="tarot-widget"></div>

<!-- Подключаем скрипт виджета (можно разместить в отдельном файле) -->
<script src="tarot-widget.js"></script>

Стили CSS

Ниже минимальный набор стилей, который делает виджет визуально приятным. Вы можете скопировать их в свой style.css или оставить внутри <style>, как в примере выше.

.widget {
 border: 2px solid #16a085;
 padding: 15px;
 border-radius: 8px;
 max-width: 350px;
 background: #fafafa;
}
.card {
 margin: 10px 0;
 font-weight: bold;
 font-size: 1.2em;
}
.meaning {
 font-size: 0.9em;
 color: #555;
}
.btn {
 background: #16a085;
 color: #fff;
 border: none;
 padding: 8px 12px;
 border-radius: 4px;
 cursor: pointer;
}
.btn:hover {
 background: #1abc9c;
}

Логика JavaScript

Ключевая часть – массив с данными о 78 картах Таро и функции, которые случайным образом выбирают карту, выводят её изображение и значение.

Данные о картах

Для простоты в примере используется JSON‑массив tarotDeck. В реальном проекте картинки могут храниться в CDN, а описания – в отдельном файле.

const tarotDeck = [
 {
 name: "Шут (The Fool)",
 img: "https://example.com/tarot/fool.png",
 meaning: "Новый путь, свобода, риск, беззаботность."
 },
 {
 name: "Маг (The Magician)",
 img: "https://example.com/tarot/magician.png",
 meaning: "Воля, творческая энергия, умение управлять ресурсами."
 },
 // ... остальные 76 карт ...
];

Функция случайного выбора

function getRandomCard {
 const index = Math.floor(Math.random * tarotDeck.length);
 return tarotDeck[index];
}

Рендеринг виджета

function renderWidget {
 const container = document.getElementById('tarot-widget');
 if (!container) return;

 // Базовая разметка <div class="widget">
 <h3>Гадание на Таро</h3>
 <button class="btn" id="drawBtn">Тянуть карту</button>
 <div id="result" style="margin-top:15px;"></div>
 </div>
 `;


 const btn = document.getElementById('drawBtn');
 const resultDiv = document.getElementById('result');

 btn.addEventListener('click',  => {
 const card = getRandomCard; <div class="card">${card.name}</div>
 <img src="${card.img}" alt="${card.name}" style="max-width:100%;height:auto;">
 <div class="meaning">${card.meaning}</div>
 `;
 });
}

// Инициализируем после загрузки страницы
document.addEventListener('DOMContentLoaded', renderWidget);

Полный пример кода (tarot-widget.js)

// tarot-widget.js
// ---------------------------------------------------------------
// Данные о колоде (для примера – только 3 карты, расширьте до 78)
// ---------------------------------------------------------------
const tarotDeck = [
 {
 name: "Шут (The Fool)",
 img: "https://i.imgur.com/0vK6p1r.png",
 meaning: "Новый путь, свобода, риск, беззаботность."
 },
 {
 name: "Маг (The Magician)",
 img: "https://i.imgur.com/1Jb4Y2N.png",
 meaning: "Воля, творческая энергия, умение управлять ресурсами."
 },
 {
 name: "Верховная Жрица (The High Priestess)",
 img: "https://i.imgur.com/2Kf8s9Q.png",
 meaning: "Интуиция, тайные знания, внутренний голос."
 }
 // Добавьте остальные карты в том же формате
];

// ---------------------------------------------------------------
// Случайный выбор карты
// ---------------------------------------------------------------
function getRandomCard {
 const index = Math.floor(Math.random * tarotDeck.length);
 return tarotDeck[index];
}
// ---------------------------------------------------------------// Рендеринг виджета
// ---------------------------------------------------------------
function renderWidget {
 const container = document.getElementById('tarot-widget');
 if (!container) {
 console.warn('Контейнер #tarot-widget не найден');
 return;
 }

 // Основная разметка виджета 

Гадание на Таро

`; const btn = document.getElementById('drawBtn'); const resultDiv = document;getElementById('result'); btn.addEventListener('click', => { const card = getRandomCard; // Формируем вывод
${card.name}
${card.name}
${card.meaning}
`; // Пример анимации (fade‑in) resultDiv.style.opacity = 0; setTimeout( => resultDiv.style.transition = "opacity 0.5s", 0); setTimeout( => resultDiv.style.opacity = 1, 10); }); } // Инициализация после полной загрузки DOM document.addEventListener('DOMContentLoaded', renderWidget);

Как интегрировать виджет в ваш сайт

  1. Создайте файл tarot-widget.js и вставьте в него код из раздела 6.
  2. Разместите в корне сайта (или в подпапке js/).
  3. <div id="tarot-widget"></div>
  4. Подключите скрипт после контейнера (или в конце <body>):
    <script src="js/tarot-widget.js"></script>
  5. Если вы хотите изменить стили, добавьте свой CSS‑файл либо переопределите классы .widget, .btn и т.д.

Расширения и улучшения

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

Расклад «Три карты»

function drawThreeCards {
 const shuffled = [...tarotDeck].sort( => Math.random ─ 0.5);
 return shuffled.slice(0, 3);
}

// В обработчике:
btn.addEventListener('click',  => {
 const cards = drawThreeCards; <div class="card">${card.name}</div>
 <img src="${card.img}" alt="${card.name}" style="max-width:100%;height:auto;">
 <div class="meaning">${card.meaning}</div>
 <hr>
 `).join('');
});

Сохранение истории в localStorage

function saveToHistory(card) {
 const history = JSON.parse(localStorage.getItem('tarotHistory') || '[]');
 history.unshift({name: card.name, time: new Date.toISOString});
 localStorage.setItem('tarotHistory', JSON.stringify(history.slice(0,20)));
}

Поддержка нескольких языков

Создайте объект i18n и подставляйте строки в зависимости от выбранного языка.

const i18n = {
 ru: {title: "Гадание на Таро", btn: "Тянуть карту"},
 en: {title: "Tarot Reading", btn: "Draw a card"}
};
let lang = 'ru'; // можно менять динамически
// При рендере: <div class="widget">
 <h3>${i18n[lang].title}</h3>
 <button class="btn" id="drawBtn">${i18n[lang].btn}</button>
 …
`;

Анимация «перемешивания»

Для более плавного UX можно добавить CSS‑анимацию вращения картинки перед тем, как показать её.

.card-img {
 animation: spin 0.6s ease-out;
}
@keyframes spin {
 from {transform: rotateY(180deg);}
 to {transform: rotateY(0deg);}
}

Интеграция с сервером

Если требуется хранить результаты гаданий (например, в приложении talking: таро гороскоп гадание), отправьте запрос POST на ваш API после выбора карты.

fetch('/api/tarot', {
 method: 'POST',
 headers: {'Content-Type':'application/json'},
 body: JSON.stringify({card: card.name, userId: USER_ID})
})
.then(r => r.json)
.then(data => console.log('Saved', data));

Мы создали полностью автономный виджет гадания на Таро, который:

  • не требует сторонних библиотек;
  • не собирает пользовательские данные (соответствует политикам конфиденциальности, как у talking);
  • может быть расширен до сложных раскладов, локализации и интеграции с сервером.

Скопируйте представленный код, адаптируйте стили под дизайн вашего сайта и наслаждайтесь мгновенными гаданиями для пользователей. При желании вы можете добавить собственные изображения, более детальные описания и даже систему рейтингов специалистов, как в приложении talking: таро гороскоп гадание.

Удачной разработки и мистических открытий!