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 |
См. также
© 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