Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
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.
/* Two <number> values */ transform: rotate(atan2(3, 2)); /* Two <dimension> values */ transform: rotate(atan2(1rem, -0.5rem)); /* Two <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).
yThe y-coordinate of the point. A calculation which resolves to a <number>, a <dimension>, or a <percentage>.
xThe x-coordinate of the point. A calculation which resolves to a <number>, a <dimension>, or a <percentage>.
Given two values 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).
<atan2()> =
atan2( <calc-sum> , <calc-sum> )
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
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>
div.box {
width: 100px;
height: 100px;
background: linear-gradient(orange, red);
}
div.box-1 {
transform: rotate(atan2(3, 2));
}
div.box-2 {
transform: rotate(atan2(3%, -2%));
}
div.box-3 {
transform: rotate(atan2(-1, 0.5));
}
div.box-4 {
transform: rotate(atan2(1, 0.5));
}
div.box-5 {
transform: rotate(atan2(1rem, -0.5rem));
}
| Specification |
|---|
| CSS Values and Units Module Level 4> # trig-funcs> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
atan2 |
111 | 111 | 108 | 97 | 15.4 | 111 | 108 | 75 | 15.4 | 22.0 | 111 | 15.4 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/atan2