Learn How to Shake/Wiggle an Image with CSS

1. Introduction

In the ever-evolving landscape of web design, developers continually seek creative ways to engage users and make their websites stand out. One popular approach is to add dynamic effects using CSS animations. In this article, we’ll delve into the exciting world of CSS animations and explore how to shake or wiggle an image with CSS to add a touch of playfulness and interactivity to your website.

2. Understanding CSS Animation

CSS animations allow developers to apply dynamic movement and transitions to elements on a webpage. By leveraging keyframes, animations can smoothly transform an element from one state to another. Animations can be utilized to create various effects, from subtle transitions to eye-catching movements like shaking or wiggling an image.

3. Creating the HTML Structure

Before we dive into the CSS, we need to set up the HTML structure. Let’s start by creating a simple HTML file with an image that we’ll apply the shake and wiggle animations to.

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Shake and Wiggle CSS Animation</title>
    <link rel="stylesheet" href="styles.css">
    <div class="image-container">
        <img src="your-image.jpg" alt="Your Image">

4. Styling the Image

4.1. Applying Basic Styling

To get started, let’s apply some basic styling to the image container and the image itself. We’ll use CSS to center the image and set its dimensions appropriately.

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;

.image-container {
    position: relative;

img {
    width: 300px; /* Adjust the size according to your preference */
    height: 300px; /* Maintain the aspect ratio */

4.2. Defining Keyframes for Animation

Before we create the animation, let’s define the keyframes that will dictate the image’s movement during the animation. Keyframes represent the different states of the animation.

@keyframes shake {
    0% { transform: translateX(0); }
    25% { transform: translateX(-10px) rotate(5deg); }
    50% { transform: translateX(10px) rotate(-5deg); }
    75% { transform: translateX(-5px) rotate(2.5deg); }
    100% { transform: translateX(5px) rotate(-2.5deg); }

@keyframes wiggle {
    0% { transform: rotate(0); }
    25% { transform: rotate(5deg); }
    50% { transform: rotate(-5deg); }
    75% { transform: rotate(2.5deg); }
    100% { transform: rotate(-2.5deg); }

5. Implementing the Shake Animation

Now that we have our keyframes defined, let’s apply the shake animation to the image container. This will make the image shake horizontally.

.image-container {
    animation: shake 0.5s infinite;

6. Enhancing the Wiggle Effect

Next, let’s add the wiggle animation to the image itself. This will create a gentle swaying motion.

img {
    animation: wiggle 0.5s infinite;

7. Adding Delays for Variation

To make the animation more visually appealing, we can add a slight delay between the shake and wiggle animations. This will create a more dynamic effect.

.image-container {
    animation: shake 0.5s infinite, wiggle 0.5s infinite 0.1s;

8. Fine-Tuning Animation Duration and Timing Function

You can experiment with the duration and timing function of the animations to achieve different effects. For example, increasing the duration will slow down the animation, while adjusting the timing function will change the acceleration and deceleration pattern.

9. Applying the Animation to Other Elements

Remember that CSS animations can be applied to various elements beyond images. You can use the same principles to animate buttons, text, or any other element you want to add a touch of interactivity to.

10. Conclusion

In this article, we’ve explored the exciting world of CSS animations and learned how to shake and wiggle an image to add engaging and dynamic effects to your website. By leveraging keyframes and applying the appropriate animations, you can create eye-catching visuals that captivate your visitors and elevate their browsing experience.

Remember, the key to successful animation lies in moderation. Avoid overwhelming your users with excessive animations that might distract from your website’s content. Use animations sparingly and purposefully to achieve the best results.

11. FAQs

Can I use CSS animations on any HTML element?

Yes, CSS animations can be applied to various HTML elements, including images, text, buttons, and more.

Are CSS animations supported on all browsers?

Most modern browsers support CSS animations, but it’s essential to check for compatibility with older versions.

How can I create more complex animations with CSS?

To create more complex animations, you can combine multiple keyframes and use CSS transitions to achieve smooth effects.

Can I use CSS animations for mobile devices?

Absolutely! CSS animations work well on both desktop and mobile devices, enhancing the user experience across different platforms.

Is it possible to control animation speed with CSS?

Yes, you can control animation speed by adjusting the animation-duration property or using different timing functions.

Leave a Comment