Menu

Log in

Sign up

From beginner to master of web design, coding, infrastructure operation, business development and marketing

  • COURSES
  • HTML & CSS Introduction
  • HTML & CSS Coding with AI
  • Linux Introduction
  • Docker Basics
  • Git & GitHub Introduction
  • JavaScript Coding with AI
  • Django Introduction
  • AWS Basics
  • Figma Introduction
  • SEO Tutorial for Beginners
  • SEO with AI
  • OTHERS
  • About
  • Terms of Service
  • Privacy Policy

© 2024 D-Libro. All Rights Reserved

JavaScript Coding with AIChapter 7. Manipulating Web Pages With Javascript

Animation Events

Animation Events

Animation Events

Animation events in JavaScript provide a way to detect and respond to changes in CSS animations. They are essential for creating interactive, visually engaging web applications. Whether you’re designing button behaviors or complex animations, these events allow you to add a new level of interactivity.

In this section, we’ll cover the following topics:

  • What Are Animation Events?
  • Implementing Animation Events with AI Assistance
  • Best Practices for Animation Events

What Are Animation Events?

Animation events allow developers to detect specific stages of a CSS animation, such as when it starts, iterates, or ends. These events are often used to trigger additional functionality in web applications, enhancing the user experience.

Common Animation Events

  • animationstart: Triggered when a CSS animation begins.
  • animationiteration: Fires each time an animation cycle is completed.
  • animationend: Occurs when an animation finishes running.
  • animationcancel: Fires when an animation is canceled.

Key Properties and Methods

Animation events themselves do not have dedicated properties or methods. Instead, you can access information such as the name of the animation and its elapsed time through the event object.

Implementing Animation Events with AI Assistance

Animation events can simplify creating complex animations with dynamic behavior. By combining CSS animations with JavaScript event listeners, developers can automate workflows and enhance interactivity.

Preparing for Practice Files
This course takes a hands-on approach, allowing you to apply the techniques covered in real-world scenarios. We'll be using a structured folder layout. Before proceeding with the examples, please ensure the following files are prepared:

/your-project-folder/  
  |─07-12-animation-events/ (<- sub-folder)  
    |─ example-1.css  
    |─ example-1.html  
    |─ example-1.js  
    |─ example-2.css  
    |─ example-2.html  
    |─ example-2.js
    |─ example-3.css  
    |─ example-3.html  
    |─ example-3.js
    |─ example-4.css  
    |─ example-4.html  
    |─ example-4.js

For your convenience, these files are also available on our GitHub repository.

AI Case 1: Loading Spinner on Button Click

Real-time feedback using a loading spinner enhances user experience by providing visual cues during processing.

Sample AI prompt:

Create a visually appealing button with a loading spinner animation that activates when clicked.

Include:

  • HTML (example-1.html): Add an instructional message above the button and include a spinner inside the button.
  • CSS (example-1.css): Center the UI horizontally, style the button and spinner with a modern design.
  • JavaScript (example-1.js): Trigger the spinner on click and reset it after 3 seconds.

Sample code output:

07-12-animation-events/example-1.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="example-1.css" />
    <title>Loading Spinner Example</title>
  </head>
  <body>
    <div class="container">
      <p class="instruction">
        Click the button below to see a standard loading spinner in action:
      </p>
      <button id="loading-btn">
        <span class="button-text">Click Me</span>
        <span class="spinner"></span>
      </button>
    </div>
    <script src="example-1.js"></script>
  </body>
</html>

07-12-animation-events/example-1.css
/* General Styles */
body {
  margin: 0;
  font-family: Arial, sans-serif;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f9f9f9;
}

/* Container */
.container {
  text-align: center;
}

/* Instructions */
.instruction {
  font-size: 18px;
  margin-bottom: 20px;
  color: #333;
}

/* Button Styles */
#loading-btn {
  position: relative;
  padding: 12px 24px;
  font-size: 16px;
  font-weight: bold;
  color: white;
  background-color: #007bff;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  overflow: hidden;
  transition: background-color 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

#loading-btn:hover {
  background-color: #0056b3;
}

/* Button Text */
.button-text {
  visibility: visible;
}

/* Spinner */
.spinner {
  width: 16px;
  height: 16px;
  border: 2px solid transparent;
  border-top: 2px solid white;
  border-radius: 50%;
  position: absolute;
  visibility: hidden;
  animation: spin 1s linear infinite;
}

#loading-btn.loading .button-text {
  visibility: hidden;
}

#loading-btn.loading .spinner {
  visibility: visible;
}

/* Spinner Animation */
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

07-12-animation-events/example-1.js
const button = document.getElementById("loading-btn");

button.addEventListener("click", () => {
  button.classList.add("loading");

  // Simulate an asynchronous operation
  setTimeout(() => {
    button.classList.remove("loading");
  }, 3000); // Spinner lasts for 3 seconds
});

Instructions to see the results:
Save the code above in each file. Open the HTML file in your browser to view the validation behavior.

To see how the code works, you can also check out the link below.

Demo Web Page 32

AI Case 2: Celebrate Button Click with Confetti

Adding a confetti effect to a button click creates a fun and celebratory user experience.

Sample AI prompt:

Create a visually appealing button that triggers a confetti animation when clicked.

Include:

  • HTML (example-2.html): Add an instructional message above the button and include a confetti container.
  • CSS (example-2.css): Center the UI horizontally and design the button and confetti elements to create a modern appearance.
  • JavaScript (example-2.js): Generate multiple colorful confetti particles that spread across the screen when the button is clicked.

Sample code output:

07-12-animation-events/example-2.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="example-2.css" />
    <title>Confetti Animation Example</title>
  </head>
  <body>
    <div id="confetti-container">
      <div class="container">
        <p class="instruction">
          Click the button below to trigger a full-screen confetti animation:
        </p>
        <button id="confetti-btn">Celebrate</button>
      </div>
    </div>
    <script src="example-2.js"></script>
  </body>
</html>

07-12-animation-events/example-2.css
/* General Styles */
body,
html {
  margin: 0;
  font-family: Arial, sans-serif;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

/* Full-Screen Confetti Container */
#confetti-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #f4f6f8;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}

/* Content Container */
.container {
  text-align: center;
  z-index: 10; /* Ensure button and text are above confetti */
}

/* Instructions */
.instruction {
  font-size: 18px;
  margin-bottom: 20px;
  color: #444;
}

/* Button Styles */
#confetti-btn {
  padding: 14px 28px;
  font-size: 16px;
  font-weight: bold;
  color: white;
  background-color: #28a745;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

#confetti-btn:hover {
  background-color: #218838;
}

/* Confetti Particles */
.confetti {
  position: absolute;
  width: 10px;
  height: 10px;
  background-color: var(--confetti-color, red);
  animation: fly 2s ease-out forwards;
  z-index: 5; /* Ensure confetti stays behind the button */
}

/* Animations */
@keyframes fly {
  0% {
    transform: translate(0, 0) scale(1);
    opacity: 1;
  }
  100% {
    transform: translate(var(--x-distance), var(--y-distance)) scale(0.5);
    opacity: 0;
  }
}

07-12-animation-events/example-2.js
const button = document.getElementById("confetti-btn");
const confettiContainer = document.getElementById("confetti-container");

button.addEventListener("click", () => {
  for (let i = 0; i < 150; i++) {
    // Increased particle count for better effect
    const confetti = document.createElement("div");
    confetti.classList.add("confetti");
    confetti.style.setProperty("--confetti-color", getRandomColor());
    confetti.style.setProperty(
      "--x-distance",
      `${getRandomPosition(-window.innerWidth / 2, window.innerWidth / 2)}px`
    );
    confetti.style.setProperty(
      "--y-distance",
      `${getRandomPosition(-window.innerHeight / 2, window.innerHeight / 2)}px`
    );
    confetti.style.left = `${Math.random() * 100}%`;
    confetti.style.top = `${Math.random() * 100}%`;

    confettiContainer.appendChild(confetti);

    // Remove confetti after animation ends
    setTimeout(() => {
      confetti.remove();
    }, 2000);
  }
});

// Helper function to generate random bright colors
function getRandomColor() {
  const colors = [
    "#f44336",
    "#e91e63",
    "#9c27b0",
    "#3f51b5",
    "#2196f3",
    "#03a9f4",
    "#00bcd4",
    "#4caf50",
    "#ffeb3b",
    "#ff9800",
  ];
  return colors[Math.floor(Math.random() * colors.length)];
}

// Helper function to generate random positions
function getRandomPosition(min, max) {
  return Math.random() * (max - min) + min;
}

Instructions to see the results:
Save the code above in each file. Open the HTML file in your browser to view the validation behavior.

To see how the code works, you can also check out the link below.

Demo Web Page 33

AI Case 3: Dynamic Button Size on Hover

A pulsating button effect can draw user attention effectively, especially on hover. This example shows how the button grows dynamically and stops after three iterations.

Sample AI prompt:

Create a visually appealing button with a pulsating hover effect that stops after three iterations.

Include:

  • HTML (example-3.html): Add an instructional message above the button.
  • CSS (example-3.css): Style the button with a pulsating hover effect, centered horizontally.
  • JavaScript (example-3.js): Stop the animation after three iterations using JavaScript.

Sample code output:

07-12-animation-events/example-3.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="example-3.css" />
    <title>Pulsating Button Example</title>
  </head>
  <body>
    <div class="container">
      <p class="instruction">
        Hover over the button below to see a pulsating effect:
      </p>
      <button id="pulsate-btn">Hover Me</button>
    </div>
    <script src="example-3.js"></script>
  </body>
</html>

07-12-animation-events/example-3.css
/* General Styles */
body {
  margin: 0;
  font-family: Arial, sans-serif;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f4f6f8;
}

/* Container */
.container {
  text-align: center;
}

/* Instructions */
.instruction {
  font-size: 18px;
  margin-bottom: 20px;
  color: #444;
}

/* Button Styles */
#pulsate-btn {
  padding: 14px 28px;
  font-size: 16px;
  font-weight: bold;
  color: white;
  background-color: #007bff;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: transform 0.3s ease;
}

#pulsate-btn:hover {
  animation: pulsate 0.8s ease-out infinite;
}

@keyframes pulsate {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
}

07-12-animation-events/example-3.js
const button = document.getElementById("pulsate-btn");
let iterationCount = 0;

button.addEventListener("animationiteration", () => {
  iterationCount++;
  if (iterationCount >= 3) {
    button.style.animation = "none"; // Stop animation after 3 iterations
  }
});

button.addEventListener("mouseover", () => {
  iterationCount = 0; // Reset count when hovered again
  button.style.animation = "pulsate 0.8s ease-out infinite";
});

Instructions to see the results:
Save the code above in each file. Open the HTML file in your browser to view the validation behavior.

To see how the code works, you can also check out the link below.

Demo Web Page 34

AI Case 4: Cancel Animation on Exit

Canceling an animation dynamically based on user behavior creates a responsive and interactive experience. This example demonstrates a color-changing animation that stops when the mouse exits the button.

Sample AI prompt:

Create a visually appealing button with a smooth color-changing animation that activates on click and cancels when the mouse exits the button.

Include:

  • HTML (example-4.html): Add an instructional message above the button.
  • CSS (example-4.css): Style the button with smooth color transitions and center the UI.
  • JavaScript (example-4.js): Trigger the animation on click and cancel it when the mouse leaves the button.

Sample code output:

07-12-animation-events/example-4.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="example-4.css" />
    <title>Cancel Animation Example</title>
  </head>
  <body>
    <div class="container">
      <p class="instruction">
        Click the button to start a smooth color-shifting animation. Move your
        mouse away to cancel the animation instantly:
      </p>
      <button id="cancel-btn">Click Me</button>
    </div>
    <script src="example-4.js"></script>
  </body>
</html>

07-12-animation-events/example-4.css
/* General Styles */
body {
  margin: 0;
  font-family: Arial, sans-serif;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f4f6f8;
}

/* Container */
.container {
  text-align: center;
}

/* Instructions */
.instruction {
  font-size: 18px;
  margin-bottom: 20px;
  color: #444;
}

/* Button Styles */
#cancel-btn {
  padding: 14px 28px;
  font-size: 16px;
  font-weight: bold;
  color: white;
  background-color: #007bff;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

#cancel-btn:hover {
  transform: scale(1.1);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}

#cancel-btn.animate {
  animation: colorShift 3s infinite alternate ease-in-out;
}

/* Animation */
@keyframes colorShift {
  0% {
    background-color: #007bff;
  }
  25% {
    background-color: #1e90ff;
  }
  50% {
    background-color: #32cd32;
  }
  75% {
    background-color: #ffa500;
  }
  100% {
    background-color: #ff4500;
  }
}

07-12-animation-events/example-4.js
const button = document.getElementById("cancel-btn");

// Start animation on click
button.addEventListener("click", () => {
  button.classList.add("animate");
});

// Cancel animation on mouse leave
button.addEventListener("mouseleave", () => {
  button.classList.remove("animate");
});

Instructions to see the results:
Save the code above in each file. Open the HTML file in your browser to view the validation behavior.

To see how the code works, you can also check out the link below.

Demo Web Page 35

Best Practices for Animation Events

To make the most of animation events in your applications, follow these key practices:

  • Focus on Performance: Optimize animations to avoid lag. Minimize operations in event listeners and use hardware-accelerated properties like transform and opacity for smoother effects.
  • Enhance User Experience: Use animations to provide meaningful feedback, like spinners or highlights, while keeping effects subtle and non-distracting.
  • Ensure Accessibility: Respect user preferences by implementing the prefers-reduced-motion media query to disable non-essential animations for those with motion sensitivity.
  • Clean Up Event Listeners: Remove unused animation listeners to prevent memory leaks and maintain performance.

Animation events are a powerful tool to improve interactivity and visual appeal in your applications. When used thoughtfully, they can create seamless and engaging user experiences without compromising performance or accessibility.

Reference links:

AnimationEvent - MDN Web Docs

More Topics to Explore

Using float for Text Wrapping Around Images

float: left and right

Case Style For Javascript

Case Style For Javascript

Styling Components with AI: Buttons, Cards, and More

Styling Components with AI: Buttons, Cards, and More

Fine-tuning List Marker Positioning with CSS

list-style-position

Dark Mode Design: Creating Dark Color Palette in CSS

Dark Mode Design: Creating Dark Color Palette in CSS

Using float for Text Wrapping Around Images

float: left and right

Case Style For Javascript

Case Style For Javascript

Styling Components with AI: Buttons, Cards, and More

Styling Components with AI: Buttons, Cards, and More

Fine-tuning List Marker Positioning with CSS

list-style-position

Dark Mode Design: Creating Dark Color Palette in CSS

Dark Mode Design: Creating Dark Color Palette in CSS

Tags:

Interactive Web Applications

Animation Events

JavaScript Animations

CSS Animation Stages

AI-Assisted Animation

JavaScript Coding with AI
Course Content

Chapter 1. Key Javascript Concepts And Coding With AI

What Is Javascript?

Start Writing Javascript With AI Assistance

Javascript Basics

Chapter 2. Javascript Basic Syntax

Statements And Expressions

Variables

Case Sensitivity

Case Style For Javascript

Reserved Words

Escape Characters

Semi-Colons

Spaces And Indentation

Comments

Literals and Data Types

Arrays

Template Literal

Brackets

Chapter 3. Operators In Javascript

Arithmetic Operators

Increment And Decrement Operators

Assignment Operators

Comparison Operators

Conditional Operators

Logical Operators

Logical Assignment Operators

Nullish Coalescing Operator

Optional Chaining

Three Dots in JavaScript

Chapter 4. Control Statements In Javascript

If Statement

Switch Statement

While Statement

For Statement

Chapter 5. Functions In Javascript

How To Create A Function

Functions With Default Parameter

Return Values

Variable Scope

Function Hoisting

This in JavaScript

Anonymous Function

Arrow Function

Higher-Order Function

Chapter 6. Objects, Methods, And Classes In Javascript

Objects

Methods

Array Methods

Classes

Immutable and Mutable Data Types

What Is JSON?

Chapter 7. Manipulating Web Pages With Javascript

BOM And DOM

getElementBy vs. querySelector

Event Handler And Event Listener

Event Object

Mouse Events

Keyboard Events

Focus And Blur Events

Form Events

Window Events

Touch Events

Drag And Drop Events

Animation Events

Media Events, Network Events, and More

Javascript Custom Events

Chapter 8. Web API And Ajax Javascript Coding

What Are The HTTP Methods?

What Is Ajax?

Implementing Web APIs

Chapter 9. Modules And Libraries In Javascript

Javascript Libraries And Frameworks

NPM: Javascript Package Manager

How To Use jQuery

Chapter 10. Browser Storage in JavaScript

Local Storage

Session Storage

Cookies

Chapter 11. Building Web Applications in JavaScript

Node.js and Express.js

Database Integration: Mongo DB

Developing a Chat Application

Canvas HTML Tag and JavaScript

Creating an Online Drawing Tool

Chapter 1. Key Javascript Concepts And Coding With AI

What Is Javascript?

Start Writing Javascript With AI Assistance

Javascript Basics

Chapter 2. Javascript Basic Syntax

Statements And Expressions

Variables

Case Sensitivity

Case Style For Javascript

Reserved Words

Escape Characters

Semi-Colons

Spaces And Indentation

Comments

Literals and Data Types

Arrays

Template Literal

Brackets

Chapter 3. Operators In Javascript

Arithmetic Operators

Increment And Decrement Operators

Assignment Operators

Comparison Operators

Conditional Operators

Logical Operators

Logical Assignment Operators

Nullish Coalescing Operator

Optional Chaining

Three Dots in JavaScript

Chapter 4. Control Statements In Javascript

If Statement

Switch Statement

While Statement

For Statement

Chapter 5. Functions In Javascript

How To Create A Function

Functions With Default Parameter

Return Values

Variable Scope

Function Hoisting

This in JavaScript

Anonymous Function

Arrow Function

Higher-Order Function

Chapter 6. Objects, Methods, And Classes In Javascript

Objects

Methods

Array Methods

Classes

Immutable and Mutable Data Types

What Is JSON?

Chapter 7. Manipulating Web Pages With Javascript

BOM And DOM

getElementBy vs. querySelector

Event Handler And Event Listener

Event Object

Mouse Events

Keyboard Events

Focus And Blur Events

Form Events

Window Events

Touch Events

Drag And Drop Events

Animation Events

Media Events, Network Events, and More

Javascript Custom Events

Chapter 8. Web API And Ajax Javascript Coding

What Are The HTTP Methods?

What Is Ajax?

Implementing Web APIs

Chapter 9. Modules And Libraries In Javascript

Javascript Libraries And Frameworks

NPM: Javascript Package Manager

How To Use jQuery

Chapter 10. Browser Storage in JavaScript

Local Storage

Session Storage

Cookies

Chapter 11. Building Web Applications in JavaScript

Node.js and Express.js

Database Integration: Mongo DB

Developing a Chat Application

Canvas HTML Tag and JavaScript

Creating an Online Drawing Tool

FAQ: Animation Events in JavaScript

What Are Animation Events?

Animation events allow developers to detect specific stages of a CSS animation, such as when it starts, iterates, or ends. These events are often used to trigger additional functionality in web applications, enhancing the user experience.

What Are the Common Animation Events?

The common animation events include:

  • animationstart: Triggered when a CSS animation begins.
  • animationiteration: Fires each time an animation cycle is completed.
  • animationend: Occurs when an animation finishes running.
  • animationcancel: Fires when an animation is canceled.

How Can Animation Events Be Implemented with AI Assistance?

Animation events can simplify creating complex animations with dynamic behavior. By combining CSS animations with JavaScript event listeners, developers can automate workflows and enhance interactivity. AI can assist in generating code snippets and providing design suggestions.

What Are the Best Practices for Using Animation Events?

To make the most of animation events in your applications, follow these key practices:

  • Focus on Performance: Optimize animations to avoid lag. Minimize operations in event listeners and use hardware-accelerated properties like transform and opacity for smoother effects.
  • Enhance User Experience: Use animations to provide meaningful feedback, like spinners or highlights, while keeping effects subtle and non-distracting.
  • Ensure Accessibility: Respect user preferences by implementing the prefers-reduced-motion media query to disable non-essential animations for those with motion sensitivity.
  • Clean Up Event Listeners: Remove unused animation listeners to prevent memory leaks and maintain performance.

What Are Key Properties and Methods of Animation Events?

Animation events themselves do not have dedicated properties or methods. Instead, you can access information such as the name of the animation and its elapsed time through the event object.