此页面由社区从英文翻译而来。了解更多并加入 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

浏览器兼容性

参见