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