此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

abs()

Baseline 2025
Newly available

Since ⁨June 2025⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

CSS 函数 abs() 返回其参数的绝对值,并且返回值的类型与输入类型相同。

语法

css
/* abs( <calc-sum> ) */
abs(20% - 100px)
abs(var(--gradientAngle))

参数

abs() 函数只接受一个参数。

<calc-sum>

一个会解析为 <number><dimension><percentage><calc-keyword> 的表达式或计算式。

返回值

<calc-sum> 的绝对值。

  • 如果 <calc-sum> 的数值为正数或 0⁺,则函数返回 <calc-sum>
  • 否则,返回 -1 * <calc-sum>

形式语法

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

示例

正值变量

abs() 函数可用于确保某个值始终为正数。在下面的示例中,使用 CSS 自定义属性 --font-size 作为 font-size 的值。将该自定义属性包裹在 abs() 中,可以把负值转换为正值。

css
h1 {
  font-size: abs(var(--font-size));
}

控制渐变角度方向

你也可以使用 abs() 函数来控制渐变的方向。在下面的示例中,如果角度是 -45deg,渐变将从红色开始过渡到蓝色。通过使用 abs() 将该值转换为正数后,渐变将从蓝色开始过渡到红色。

css
div {
  --deg: -45deg;
  background-image: linear-gradient(abs(var(--deg)), blue, red);
}

向后兼容的回退方案

在不支持 CSS abs() 函数的浏览器中,可以使用 CSS max() 函数来实现相同的效果:

css
p {
  line-height: max(var(--lh), -1 * var(--lh));
}

我们使用 max() 函数从两个值中返回较大(即更接近正数)的那个:var(--lh)-1 * var(--lh)。无论 --lh 是正数还是负数,计算得到的返回值都会是正数,也就是其绝对值。

规范

Specification
CSS Values and Units Module Level 4
# sign-funcs

浏览器兼容性

参见