Using `atan` for Effective CSS Transformations: Examples and Applications


  • Output
    It returns the angle in radians, ranging from negative infinity (-π) to positive infinity (π).
  • Input
    The atan function takes one argument, which must be a number (positive, negative, zero, or even infinity).
  • Purpose
    It calculates the inverse tangent of a single numerical value. The inverse tangent, also written as arctangent, is essentially finding the angle whose tangent is the provided number.
  • CSS functions like atan operate on numbers. If you provide a unit (like px, em), it will be removed before the calculation.


Rotating an Element Based on a Number

This example shows how to rotate elements based on a single number passed to the atan function.

<div class="box box-1"></div>
<div class="box box-2"></div>
<div class="box box-3"></div>

<style>
body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 50px;
}

.box {
  width: 100px;
  height: 100px;
  background: linear-gradient(orange, red);
}

.box-1 { transform: rotate(atan(-2)); }  .box-2 { transform: rotate(atan(-1)); }  .box-3 { transform: rotate(atan(0)); }  </style>

In this code:

  • We use the atan function inside the transform: rotate property for each box with different values:
    • atan(-2): This results in a large negative value, rotating the box approximately -85.9 degrees counter-clockwise.
    • atan(-1): This represents a tangent of -1, resulting in a -45-degree rotation.
    • atan(0): As the tangent of 0 is 0, this rotates the box by 0 degrees.
  • The CSS styles the boxes and positions them in the center of the screen.
  • We define three boxes with the class names box-1, box-2, and box-3.

Using Mathematical Constants (Optional)

This example demonstrates using the mathematical constant pi (which represents 180 degrees) with atan.

.box-4 { transform: rotate(atan(pi / 2)); }  ```

Here, we use `atan(pi / 2)`. Since `pi` is roughly 3.14, dividing it by 2 gives us a value close to 1.57. The `atan` function calculates the angle whose tangent is 1.57, which is approximately 90 degrees.

Remember that these are just a few examples. You can experiment with different values passed to `atan` to achieve various rotation effects in your CSS animations.


Using atan2 (if supported)

  • This can be helpful for tasks like rotating an element based on the direction of movement or a mouse position.
  • It calculates the arctangent considering both values, similar to how you would calculate the angle based on the slope in a graph.
  • This function is available in some browsers and takes two arguments: the y-coordinate and the x-coordinate.

Example (if your browser supports atan2)

.element {
  transform: rotate(atan2(100, 50)); /* Rotates based on y=100 and x=50 */
}

Pre-calculating the Angle

  • If your two values are known beforehand (like element dimensions), you can calculate the angle using JavaScript and then apply the rotation in CSS using transform: rotate(calculated_angle).

Combining with other CSS functions

  • You might be able to achieve the desired effect by combining atan with other CSS functions like calc or trigonometric functions like sin and cos. This approach requires understanding the specific problem you're trying to solve.
  • If your project involves complex calculations, consider using a CSS preprocessor like Sass or Less. These languages allow defining variables and functions, making calculations easier to manage and reuse.