type()
语法
/* Single value */
type(<color>)
type(auto)
/* "|" combinator for multiple types */
type(<length> | <percentage>)
/* Space-separated list of values */
type(<color>+)
/* Comma-separated list of values */
type(<length>#)
/* Multiple keywords */
type(red | blue | green)
/* Combination of data type and keyword */
type(<percentage> | auto)
/* Universal syntax value */
type(*)
参数
type()
函数的语法如下:
type(<syntax>)
<syntax>
参数是定义数据类型的表达式。它可以采用以下形式:
<ident>
-
一个 CSS 关键字值,书写时不带尖括号。
<syntax-type>
-
一个类型名称,用尖括号括起来,表示一个 CSS 数据类型。支持以下数据类型:
<angle>
-
接受任何有效的
<angle>
值。 <color>
-
接受任何有效的
<color>
值。 <custom-ident>
-
接受任何有效的
<custom-ident>
值。 <image>
-
接受任何有效的
<image>
值。 <integer>
-
接受任何有效的
<integer>
值。 <length>
-
接受任何有效的
<length>
值。 <length-percentage>
-
接受任何有效的
<length>
或<percentage>
值,以及任何有效的组合了<length>
和<percentage>
值的calc()
表达式。 <number>
-
接受任何有效的
<number>
值。 <percentage>
-
接受任何有效的
<percentage>
值。 <resolution>
-
接受任何有效的
<resolution>
值。 <string>
-
接受任何有效的
<string>
值。 <time>
-
接受任何有效的
<time>
值。 <transform-function>
-
接受任何有效的
<transform-function>
值。 <transform-list>
-
接受一个由有效
<transform-function>
值组成的列表。它等价于"<transform-function>+"
,并且其后不能跟+
或#
符号。 <url>
-
接受任何有效的
<url>
值。
*
-
通用语法。
你可以使用以下符号组合 <syntax-type>
值:
此外,在为期望的语法指定多个值或组合 <ident>
和 <syntax-type>
值时,可以使用 |
符号作为分隔符。
返回值
数据类型定义。
描述
当你需要定义数据类型时,会使用 type()
函数。它可以被看作是用于定义每个 CSS 属性和函数的有效值集合的整体值定义语法的一个子集。
最常见的情况是,你会看到 type()
用于指定单一数据类型。下一个示例使用 attr()
函数将 background-color
属性设置为用户定义的 data-background
属性的值。该值所需的数据类型已被指定为 <color>
。
background-color: attr(data-background type(<color>), red);
你也可以指定一个确切的关键字要求(例如,type(blue)
),但这会过于局限。
指定 type(*)
允许任何有效的 CSS 值。这是通用语法,不能被乘积或与其他语法组件组合。
指定多个允许的类型
当指定一系列允许的数据类型、关键字或两者的组合时,你可以使用 |
符号作为分隔符。例如:
type(<length> | <percentage>)
type(red | green)
type(<length> | auto)
以下示例展示了如何使用 @function
at-rule 来定义一个自定义函数,该函数接受两个颜色参数,并返回第一个颜色,除非视口宽度小于 700px
,在这种情况下它返回第二个颜色。第一个颜色允许是 red
或 green
,而第二个必须是 blue
。
@function --color-choice(--color1 type(red | green), --color2 blue) {
result: var(--color1);
@media (width < 700px) {
result: var(--color2);
}
}
备注: 对于 @function
的数据类型,如果只指定了一个数据类型或关键字,你可以省略 type()
函数,只写值本身。前面的自定义函数中对 blue
类型的定义就是这种情况。但这种简写对 attr()
函数无效。
指定类型列表
可以在 <syntax-type>
后附加 +
和 #
符号,分别表示期望一个以空格分隔的列表或一个以逗号分隔的列表。例如:
<color>+
参数期望一个以空格分隔的<color>
值列表,例如red blue #a60000 rgb(234 45 100)
。<length>#
参数期望一个以逗号分隔的<length>
值列表,例如30px, 1em, 15vw
。
你可以使用 |
作为分隔符来组合多个符号。例如,<color># | <integer>#
表示期望一个以逗号分隔的 <color>
值列表或一个以逗号分隔的 <integer>
值列表。
正式语法
<type()> =
type( <string> )
示例
基本的 @function
数据类型定义
此示例定义了一个用于组合多个字符串的 CSS 自定义函数。
HTML
HTML 包含一个带有文本内容的 <section>
元素。
<section>What you gonna say?</section>
CSS
在 CSS 中,我们首先指定一个名为 --combine-strings
的 @function
。它有一个名为 --strings
的参数,其数据类型被指定为一个或多个以空格分隔的 <string>
值。它返回这些字符串值,并在末尾附加一个空格和一个心形表情符号。
@function --combine-strings(--strings type(<string>+)) {
result: var(--strings) " ❤️";
}
然后,我们为 <section>
元素指定一些基本样式,并使用 --combine-strings()
函数来指定其 content
属性的值,其中包含了两个以空格分隔的字符串作为参数。
section {
font-family: system-ui;
background-color: lime;
padding: 20px;
}
section::after {
content: --combine-strings("hello" "goodbye");
}
结果
规范
规范 |
---|
CSS 函数与混入模块 # funcdef-function-type |
浏览器兼容性
加载中…
另见
@function
at-ruleattr()
函数- 使用 CSS 自定义函数