Spec-Zone.ru › CSS

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

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

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

cos() CSS функция — это тригонометрическая функция, возвращающая косинус числа, то есть значение в диапазоне от -1 до 1. Функция содержит единственное вычисление, результатом которого должно быть либо <number>, либо <angle>; аргумент интерпретируется как радианы. То есть cos(45deg), cos(0.125turn) и cos(3.14159 / 4) обозначают одно и то же значение — приблизительно 0.707.

Попробуйте

transform: translateX(calc(cos(0deg) * 140px))
  translateY(calc(sin(0deg) * -140px));
transform: translateX(calc(cos(90deg) * 140px))
  translateY(calc(sin(90deg) * -140px));
transform: translateX(calc(cos(135deg) * 140px))
  translateY(calc(sin(135deg) * -140px));
transform: translateX(calc(cos(180deg) * 140px))
  translateY(calc(sin(180deg) * -140px));
transform: translateX(calc(cos(-45deg) * 140px))
  translateY(calc(sin(-45deg) * -140px));
<div class="circle">
  <span class="dot" id="example-element"></span>
</div>
:root {
  --radius: 140px;
  --dot-size: 10px;
}
.circle {
  display: grid;
  place-content: center;
  margin: 0 auto;
  width: calc(var(--radius) * 2);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 2px solid #666666;
  background-image:
    radial-gradient(black var(--dot-size), transparent var(--dot-size)),
    linear-gradient(135deg, blue, deepskyblue, lightgreen, lavender, honeydew);
}
.dot {
  display: block;
  width: var(--dot-size);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 2px solid #666666;
  background-color: #ff6666;
  transform: translateX(calc(cos(0deg) * var(--radius)))
    translateY(calc(sin(0deg) * var(--radius) * -1));
}

Синтаксис

/* Single <angle> values */
width: calc(100px * cos(45deg));
width: calc(100px * cos(0.125turn));
width: calc(100px * cos(0.785398163rad));

/* Single <number> values */
width: calc(100px * cos(63.673));
width: calc(100px * cos(2 * 0.125));

/* Other values */
width: calc(100px * cos(pi));
width: calc(100px * cos(e / 2));

Параметры

Функция cos(angle) принимает только одно значение в качестве параметра.

angle
Вычисление, результатом которого является <number> или <angle>. Если указаны числа без единиц измерения, они интерпретируются как количество радиан, представляющее <angle>.

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

Косинус angle всегда возвращает число в диапазоне от −1 до 1.

  • Если angle — это infinity, -infinity или NaN, результатом будет NaN.

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

<cos()> = 
  cos( <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

Примеры

Сохранение размера повёрнутого блока

Функцию cos() можно использовать, чтобы сохранить размер повёрнутого блока.

При повороте элемента с помощью rotate() он выходит за пределы исходного размера. Чтобы исправить это, мы используем cos() для изменения размера элемента.

Например, если повернуть квадрат размером 100px/100px на 45deg, созданный ромб будет шире и выше исходного квадрата. Чтобы уменьшить ромб до размеров области, отведённой для исходного квадрата, нужно масштабировать его с помощью этой формулы: width = height = 100px * cos(45deg) = 100px * 0.707 = 70.7px. Также необходимо изменить transform-origin и добавить translate(), чтобы скорректировать положение:

HTML

<div class="original-square"></div>
<div class="rotated-diamond"></div>
<div class="rotated-scaled-diamond"></div>

CSS

body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 50px;
}
div.original-square {
  width: 100px;
  height: 100px;
  background-color: blue;
}
div.rotated-diamond {
  width: 100px;
  height: 100px;
  background-color: red;
  transform: rotate(45deg);
}
div.rotated-scaled-diamond {
  width: calc(100px * cos(45deg));
  height: calc(100px * cos(45deg));
  margin: calc(100px / 4 * cos(45deg));
  transform: rotate(45deg);
  transform-origin: center;
  background-color: green;
}

Результат

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

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

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
cos
111
111
108
97
15.4
111
108
75
15.4
22.0
111
15.4

См. также

  • sin()
  • tan()
  • asin()
  • acos()
  • atan()
  • atan2()

© 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/cos

Spec-Zone.ru

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