cazzata / index.html
AhBoh's picture
Add 3 files
0cb6d29 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Exclamation Generator</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-20px); }
}
@keyframes shake {
0% { transform: rotate(0deg); }
25% { transform: rotate(5deg); }
50% { transform: rotate(0deg); }
75% { transform: rotate(-5deg); }
100% { transform: rotate(0deg); }
}
@keyframes confused {
0% { transform: rotate(0deg) scale(1); }
50% { transform: rotate(10deg) scale(1.1); }
100% { transform: rotate(0deg) scale(1); }
}
.character {
transition: all 0.3s ease;
}
.bounce {
animation: bounce 0.5s ease;
}
.shake {
animation: shake 0.5s ease;
}
.confused {
animation: confused 0.8s ease;
}
.speech-bubble {
position: relative;
background: #fff;
border-radius: 1rem;
padding: 1rem;
filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));
}
.speech-bubble:after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 0;
border: 10px solid transparent;
border-top-color: #fff;
border-bottom: 0;
margin-left: -10px;
margin-bottom: -10px;
}
</style>
</head>
<body class="bg-gradient-to-br from-purple-100 to-blue-100 min-h-screen flex flex-col items-center justify-center p-4">
<div class="max-w-md w-full bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-6">
<h1 class="text-3xl font-bold text-center text-purple-800 mb-2">Exclamation Generator</h1>
<p class="text-gray-600 text-center mb-6">Click the buttons to hear reactions!</p>
<div class="flex flex-col items-center mb-8">
<!-- Character -->
<div class="character relative mb-4" id="character">
<div class="w-32 h-32 bg-yellow-300 rounded-full relative">
<!-- Eyes -->
<div class="absolute top-8 left-6 w-6 h-6 bg-white rounded-full flex justify-center items-center">
<div class="w-3 h-3 bg-black rounded-full"></div>
</div>
<div class="absolute top-8 right-6 w-6 h-6 bg-white rounded-full flex justify-center items-center">
<div class="w-3 h-3 bg-black rounded-full"></div>
</div>
<!-- Mouth -->
<div class="absolute bottom-8 left-1/2 transform -translate-x-1/2 w-8 h-2 bg-black rounded-full"></div>
</div>
</div>
<!-- Speech bubble -->
<div class="speech-bubble mb-4 hidden" id="speechBubble">
<p class="text-lg font-medium" id="exclamationText"></p>
</div>
</div>
<!-- Buttons -->
<div class="grid grid-cols-3 gap-3">
<button onclick="triggerReaction('Ouch!', 'shake', 'bg-red-500')" class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded-lg transition-colors flex items-center justify-center">
<i class="fas fa-bolt mr-2"></i> Pain
</button>
<button onclick="triggerReaction('Iggit!', 'bounce', 'bg-green-500')" class="bg-green-500 hover:bg-green-600 text-white font-bold py-3 px-4 rounded-lg transition-colors flex items-center justify-center">
<i class="fas fa-star mr-2"></i> Surprise
</button>
<button onclick="triggerReaction('Äh?', 'confused', 'bg-blue-500')" class="bg-blue-500 hover:bg-blue-600 text-white font-bold py-3 px-4 rounded-lg transition-colors flex items-center justify-center">
<i class="fas fa-question mr-2"></i> Confusion
</button>
</div>
<!-- Custom input -->
<div class="mt-6">
<label class="block text-gray-700 mb-2">Make your own exclamation:</label>
<div class="flex">
<input type="text" id="customExclamation" class="flex-1 border border-gray-300 rounded-l-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500">
<button onclick="triggerCustom()" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-4 py-2 rounded-r-lg transition-colors">
Go!
</button>
</div>
</div>
</div>
</div>
<script>
function triggerReaction(text, animation, colorClass) {
const character = document.getElementById('character');
const speechBubble = document.getElementById('speechBubble');
const exclamationText = document.getElementById('exclamationText');
// Reset classes
character.className = 'character relative mb-4';
speechBubble.className = 'speech-bubble mb-4';
// Add new classes
character.classList.add(animation);
speechBubble.classList.remove('hidden');
speechBubble.classList.add(colorClass);
exclamationText.textContent = text;
// Reset after animation
setTimeout(() => {
character.classList.remove(animation);
}, 1000);
}
function triggerCustom() {
const input = document.getElementById('customExclamation');
if (input.value.trim() !== '') {
triggerReaction(input.value, 'bounce', 'bg-purple-500');
input.value = '';
}
}
// Easter egg - click on character
document.getElementById('character').addEventListener('click', function() {
const reactions = [
{text: "Hey!", animation: "bounce", color: "bg-pink-500"},
{text: "Stop that!", animation: "shake", color: "bg-red-500"},
{text: "Haha!", animation: "bounce", color: "bg-yellow-500"},
{text: "Äh?", animation: "confused", color: "bg-blue-500"}
];
const random = Math.floor(Math.random() * reactions.length);
triggerReaction(reactions[random].text, reactions[random].animation, reactions[random].color);
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=AhBoh/cazzata" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>