File size: 7,775 Bytes
0cb6d29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | <!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> |