CSS函数 round() 返回一个由特定舍入方法确定的舍入数。
作者可以使用自定义 CSS 属性(例如 --my-property)来指定舍入值和/或间隔。如果这些值已经知道,那么使用 round() 函数就变得多余了。
可能的值
函数 round(<rounding-strategy>, valueToRound, roundingInterval) 采用三个参数。第一个是要舍入的值,第二个是精度数字。
然后,根据指定的 ,rounding-strategy,将 valueToRound 四舍五入为 roundingInterval 的最接近的整数倍。
- <rounding-strategy> - 舍入策略可以具有以下值之一:
- up - 将 valueToRound 向上舍入到 roundingInterval 的最接近的整数倍。如果该值为负数,则将调整为更正的值。此操作等同于使用 JavaScript 方法 Math.ceil()。
- down(default) - 将 valueToRound 向下舍入到 roundingInterval 的最接近的整数倍。如果该值为负数,则将其调整为更负的值。此操作等同于使用 JavaScript 方法 Math.floor()。
- nearest - 将 valueToRound 四舍五入为 roundingInterval 的最接近的整数倍,该整数倍可能高于或低于该值。如果 valueToRound 正好位于上方和下方的舍入目标之间(两者都不是最接近的),则将发生舍入。这类似于使用 JavaScript 方法 Math.round()。
- to-zero - 将 valueToRound 四舍五入为更接近零的 roundingInterval 的最接近整数倍。此操作类似于使用 JavaScript Math.trunc() 方法。
- valueToRound - 要舍入的值必须是 <number>, <dimension>, 或 <percentage> 或者解析为这些类型之一的数学表达式。
- roundingInterval - 舍入间隔可以是 <number>, <dimension>, 或 <percentage> 也可以是解析为这些值之一的数学表达式。
返回值
valueToRound 的值根据所选的舍入策略舍入为 roundingInterval 的最接近的较低或较大整数倍。- 如果 roundingInterval 为 0,则结果将为 NaN(Not a Number)。
- 当 valueToRound 和 roundingInterval 都是无限时,结果为 NaN(不是数字)。
- 如果 valueToRound 是无限的,但 roundingInterval 是有限的,则结果将保持为相同的无穷大值。
- 如果 valueToRound 是有限的,但 roundingInterval 是无限的,则结果由舍入策略和 valueToRound 的符号确定:
- up - 如果 valueToRound 为正(不为零),则结果为 +∞。如果 valueToRound 为 0⁺,则结果为 0⁺。否则,结果为 0⁻。
- down - 如果 valueToRound 为负数(不为零),则结果为 −∞。如果 valueToRound 为 0⁻,则结果为 0⁻。否则,结果为 0⁺。
- nearest, to-zero - 如果 valueToRound 为正或 0⁺,则结果为 0⁺。否则,结果为 0⁻。
- 参数计算可以产生 <number>、<维度> 或 <percentage>,但它们必须具有相同的类型。否则,该函数无效;结果值的类型将与参数相同。
- 如果 valueToRound 是 roundingInterval 的整数倍,则 round() 解析为 valueToRound。否则,如果 valueToRound 介于 roundingInterval 的两个倍数之间,则认为下限倍数更接近 −∞,而上限倍数更接近 +∞。
语法
round( <rounding-strategy>? , <calc-sum> , <calc-sum> )
round() 属性仅受 Firefox 浏览器支持
CSS round() - 基本示例
以下示例演示了 round() 函数如何根据不同的舍入策略修改元素的维度。
<html>
<head>
<style>
body {
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.box {
width: 200px;
height: 100px;
margin: 20px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
border: 2px solid black;
background-color: lightblue;
--rounding-interval: 20px;
}
.exact {
width: calc(100px + 40px);
}
.up {
width: round(up, 102px,var(--rounding-interval));
}
.down {
width: round(down, 119px, var(--rounding-interval));
}
.to-zero {
width: round(to-zero, 115px, var(--rounding-interval));
}
.nearest {
width: round(121px, 25px)
}
</style>
</head>
<body>
Check the proper working on Firefox Browser
<div class="box exact">Exact Value 140px</div>
<div class="box up">102px Rounded Up to 120px</div>
<div class="box down">119px Rounded Down to 100px</div>
<div class="box to-zero">115px Rounded to-zero to 100px</div>
<div class="box nearest">121px Rounded to-nearest to 125px</div>
</body>
</html>