jQuery Pendulum Animation


Using jQuery to Create a Pendulum Animation with Custom Pivot Point

Pendulum animations are a classic example of how small, subtle movements can make a big difference in the overall user experience of a website. By using jQuery, we can create a pendulum animation with a custom pivot point that looks realistic and engaging. In this tutorial, we’ll take a look at how to create a pendulum animation using jQuery and customize the pivot point to make it more dynamic.

1. Overview of jQuery

Before we dive into the specifics of creating a pendulum animation, let’s take a brief look at what jQuery is and why it’s useful for animations. jQuery is a JavaScript library that simplifies HTML document manipulation, event handling, and animation. It was first released in 2006 and quickly became one of the most popular JavaScript libraries due to its ease of use and cross-browser compatibility.

One of the main benefits of using jQuery for animations is that it provides a wide range of built-in animation methods that make it easy to create smooth, seamless animations without having to write a lot of code. The animate() method is one such method that we’ll be using to create our pendulum animation.

2. Setting Up the Pendulum Animation

To start creating our pendulum animation, we’ll need to set up some basic HTML and CSS structure. Here’s what our HTML code should look like:

<div id="pendulum-container">
  <svg id="pendulum-svg" width="500" height="500"></svg>

We’re creating a container div with an SVG element inside it. The SVG element will be used to draw the pendulum animation. We’ll add the necessary CSS styles to make the SVG element look like a pendulum in the next section.

3. Creating the Pendulum Motion

Now that we’ve set up the basic HTML structure, we can start creating the pendulum motion using jQuery. Here’s what our JavaScript code should look like:

$(document).ready(function() {
  var svg = Snap("#pendulum-svg");
  var rod = svg.line(250, 50, 250, 250).attr({
    stroke: "#000",
    strokeWidth: 3
  var bob = svg.circle(250, 300, 25).attr({
    fill: "#f00"

  var pivotX = 250;
  var pivotY = 50;
  var bobRadius = 25;
  var rodLength = 200;
  var theta = 0;
  var amplitude = 20;
  var frequency = 0.01;

  function animatePendulum() {
    var x = pivotX + (rodLength * Math.sin(theta));
    var y = pivotY + (rodLength * Math.cos(theta));
      cy: y + (amplitude * Math.sin(theta)),
      cx: x
    }, 10, mina.easeinout, function() {
      theta += frequency;


Let’s break down what’s happening in this code. First, we’re using the $(document).ready() function to make sure our code runs only after the HTML has loaded. We’re then using the Snap.js library to create the SVG element and add a line element for the pendulum rod and a circle element for the pendulum bob.

Next, we’re defining some variables to set the initial properties of the pendulum animation. pivotX and pivotY define the position of the pivot point, bobRadius sets the radius of the pendulum bob, `rod Length’ sets the length of the pendulum rod,thetasets the initial angle of the pendulum,amplitudesets the maximum angle of swing, andfrequency` sets the speed of the pendulum.

Finally, we define the animatePendulum() function, which calculates the position of the pendulum bob using the x and y variables. We then use the animate() method to move the pendulum bob to its new position, adding a small sinusoidal movement to make it look more realistic. The theta variable is updated at the end of each animation cycle, and the function is called again to create a continuous, swinging motion.

4. Customizing the Pivot Point

By default, the pivot point of our pendulum animation is set to the center of the SVG element. However, we can customize the pivot point to create more dynamic and interesting animations. Here’s how we can change the pivot point to create a more realistic pendulum animation:

var pivotX = 250;
var pivotY = 50;
var pivot = svg.circle(pivotX, pivotY, 5).attr({
  fill: "#000"

function updatePivot() {
  var newX = pivotX + (50 * Math.sin(theta));
  var newY = pivotY + (50 * Math.cos(theta));
    cx: newX,
    cy: newY
  }, 10, mina.easeinout, function() {


We’ve added a new variable pivot to create a circle element for the pivot point. We’ve also defined a new function updatePivot() that calculates the new position of the pivot point using the newX and newY variables. These variables are calculated based on the pivotX and pivotY variables, with an added sinusoidal movement of 50 pixels to create a swinging motion.

We’re then using the animate() method to move the pivot point to its new position, again adding a small sinusoidal movement to make it look more dynamic. The function is called repeatedly to create a continuous swinging motion of the pivot point.

5. Conclusion

In this tutorial, we’ve explored how to create a pendulum animation using jQuery and customize the pivot point to make it more dynamic. By using the built-in animation methods of jQuery and the Snap.js library, we were able to create a smooth and seamless pendulum animation that looks realistic and engaging.

Customizing the pivot point allows us to create more interesting and dynamic animations that capture the user’s attention and improve the overall user experience. With a little bit of JavaScript and some creativity, we can create amazing animations that make our websites stand out from the rest.

Hire top vetted developers today!