Spec-Zone.ru › CSS

CSS-функция `atan2()`

Базовая поддержка Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с марта 2023 года.

atan2() — это тригонометрическая CSS-функция, которая возвращает арктангенс двух значений между -infinity и infinity. Функция принимает два аргумента и возвращает <angle> между -180deg и 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));

Параметры

Функция atan2(y, x) принимает два значения, разделённых запятой. Каждое значение может быть <number>, <dimension> или <percentage>. Оба значения должны быть одного типа, хотя если это <dimension>, они могут иметь разные единицы измерения (например, atan2(100px, 5vw) — допустимое значение).

y
Координата y точки. Вычисление, результатом которого является <number>, <dimension> или <percentage>.
x
Координата x точки. Вычисление, результатом которого является <number>, <dimension> или <percentage>.

Возвращаемое значение

Для двух значений x и y функция atan2(y, x) вычисляет и возвращает <angle> между положительным направлением оси x и лучом, проведённым из начала координат к точке (x, y).

Формальный синтаксис

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

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

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

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

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

Примеры

Поворот элементов

Функцию atan2() можно использовать для rotate элементов, поскольку она возвращает <angle>.

HTML

<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>

CSS

body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 50px;
}
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));
}

Результат

Спецификации

Спецификация
Модуль значений и единиц CSS, уровень 4
# trig-funcs

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari для iOS Samsung Internet WebView Android WebView для iOS
atan2
111
111
108
97
15.4
111
108
75
15.4
22.0
111
15.4

См. также

  • sin()
  • cos()
  • tan()
  • asin()
  • acos()
  • atan()
  • Использование типизированной арифметики CSS

© 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/Reference/Values/atan2

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API