Calculator Tools Calculator Tools
Create

No! Unacceptable! - Fun Animation Web App

May 10, 2025

About this app

Engage with an interactive and colorful web app that reacts to user frustration with fun animations and praises user engagement.

No! Unacceptable! - Fun Animation Web App Feeling Frustrated? No! That's Unacceptable!

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>No! Unacceptable! - Fun Animation Web App</title>
<meta name="description" content="Engage with an interactive and colorful web app that reacts to user frustration with fun animations and praises user engagement.">
<meta name="keywords" content="animation, fun app, interactive web app, user engagement, colorful, responsive">

<!-- Libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/fontawesome.min.css" crossorigin="anonymous">


<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.

// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
const unacceptableButton = document.getElementById("unacceptable-btn");
const responseText = document.getElementById("response-text");

unacceptableButton.addEventListener("click", function() {
responseText.innerHTML = `<span class="text-danger fw-bold">No!</span> <span class="text-warning">That's Unacceptable!</span>`;
responseText.classList.add("animateResponse");
});

const rerunAnimation = () => {
responseText.classList.remove("animateResponse");
void responseText.offsetWidth; // trigger reflow
responseText.classList.add("animateResponse");
}

responseText.addEventListener("animationend", () => {
responseText.classList.remove("animateResponse");
});

});

} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>

<style>
/* App CSS Goes Here */
body {
background: linear-gradient(180deg, #68a0cf, #f5aa82);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
flex-direction: column;
font-family: Arial, sans-serif;
}

#response-text {
font-size: 2rem;
margin-top: 20px;
transition: opacity 0.5s;
}

#unacceptable-btn {
padding: 20px;
font-size: 1.5rem;
background: #ff6f61;
border: none;
border-radius: 8px;
cursor: pointer;
color: white;
transition: transform 0.2s;
}

#unacceptable-btn:hover {
transform: scale(1.1);
}

.animateResponse {
animation: shake 0.5s ease;
}

@keyframes shake {
0% { transform: translateX(0); }
25% { transform: translateX(-10px); }
50% { transform: translateX(10px); }
75% { transform: translateX(-10px); }
100% { transform: translateX(0); }
}
</style>
</head>
<body>
<div id="main-container" class="container text-center">
<h1 class="display-4">Feeling Frustrated?</h1>
<button id="unacceptable-btn">No! That's Unacceptable!</button>
<div id="response-text"></div>
</div>
</body>
</html>