cos()
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));
}
语法
css
/* 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 的余弦值将始终返回一个介于 -1 和 1 之间的数字。
- 如果
angle是infinity、-infinity或NaN,则结果是NaN。
正式语法
<cos()> =
cos( <calc-sum> )
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
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
html
<div class="original-square"></div>
<div class="rotated-diamond"></div>
<div class="rotated-scaled-diamond"></div>
CSS
css
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 值和单位模块第 4 级 # trig-funcs |
浏览器兼容性
加载中…