The atan2() CSS function is a trigonometric function that returns the inverse tangent of two values between -infinity and infinity. The function accepts two arguments and returns the number of radians representing an <angle> between -180deg and 180deg.


/* Single <number> values */
transform: rotate(atan2(3, 2));

/* Single <dimension> values */
transform: rotate(atan2(1rem, -0.5rem));

/* Single <percentage> values */
transform: rotate(atan2(20%, -30%));

/* Other values */
transform: rotate(atan2(pi, 45));
transform: rotate(atan2(e, 30));


The atan2(y, x) function accepts two comma-separated values as its parameters. Each value can be a <number>, a <dimension>, or a <percentage>. Both values must be of the same type, although if they are <dimension> they can be of different units (example: atan2(100px, 5vw) is valid).


The y coordinate of the point. A calculation which resolves to a <number>, a <dimension>, or a <percentage>.


The x coordinate of the point. A calculation which resolves to a <number>, a <dimension>, or a <percentage>.

Return value

Given two points x and y, the function atan2(y, x) calculates and returns the <angle> between the positive x axis and the ray from the origin to the point (x, y).

Formal syntax

<atan2()> = 
atan2( <calc-sum> , <calc-sum> )

<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*

<calc-product> =
<calc-value> [ [ '*' | '/' ] <calc-value> ]*

<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-constant> |
( <calc-sum> )

<calc-constant> =
e |
pi |
infinity |
-infinity |


Rotate elements

The atan2() function can be used to rotate elements as it return an <angle>.


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

  width: 100px;
  height: 100px;
  background: linear-gradient(orange, red);
} {
  transform: rotate(atan2(3, 2));
} {
  transform: rotate(atan2(3%, -2%));
} {
  transform: rotate(atan2(-1, 0.5));
} {
  transform: rotate(atan2(1, 0.5));
} {
  transform: rotate(atan2(1rem, -0.5rem));



CSS Values and Units Module Level 4
# trig-funcs

Browser compatibility

BCD tables only load in the browser

See also