Spec-Zone.ru › CSS

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

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

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

sin() — это тригонометрическая функция CSS, которая возвращает синус числа — значение между -1 и 1. Функция содержит одно вычисление, результатом которого должно быть <number> или <angle>; результат аргумента интерпретируется как радианы. То есть sin(45deg), sin(0.125turn) и sin(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 * sin(45deg));
width: calc(100px * sin(0.25turn));
width: calc(100px * sin(1.0471967rad));

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

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

Параметры

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

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

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

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

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

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

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

Примеры

Изменение размеров блока

В этом примере sin(30deg) возвращает 0.5, в результате чего ширина блока составляет 50px, а высота — 50px.

div {
  background-color: red;
  width: calc(sin(30deg) * 100px);
  height: calc(sin(30deg) * 100px);
}

Управление длительностью анимации

Ещё один вариант использования — управление animation-duration, при котором длительность уменьшается в зависимости от значения синуса. В этом случае длительность анимации составит 1s.

div {
  animation-name: myAnimation;
  animation-duration: calc(sin(0.25turn) * 1s);
}

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

Спецификация
CSS Values and Units Module Level 4
# trig-funcs

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

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

См. также

  • cos()
  • 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/sin

Spec-Zone.ru

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