您可以使用 role 属性为块元素和大多数内联元素分配一个或多个角色。role 属性是一个命名属性。尽管属性名是单数形式,它可以包含多个(以空格分隔的)角色。角色也可以使用简写(点前缀)语法来定义。

一个角色:

  1. 为元素添加额外的语义

  2. 可以用来对一组元素应用额外的样式(例如,通过CSS类选择器)

  3. 如果转换器识别,可能会激活额外的行为。

Tip
在AsciiDoc中的`role`属性总是映射到HTML输出中的`class`属性。换句话说,角色名称与HTML类名是同义的,因此允许使用类选择器(例如,sidebarblock.role1)在CSS中标识和设置样式输出元素。

给块分配角色

您可以使用简写的点(.)语法或长格式(role=)语法为块分配角色。

区块的简写角色语法

要给一个块分配角色,在属性列表的样式位置上用点(.)作为值的前缀。这个点隐式地设置了`role`属性。

使用简写点分配角色的侧边栏区块
[.rolename]
****
这是一个分配有角色名的侧栏,rolename。
****

你可以通过在每个值前加上点号(.)来给一个块分配多个角色。

使用简写点分配了两个角色的侧边栏
[.role1.role2]
****
This is a sidebar with two roles assigned to it, role1 and role2.
****

角色值被转换成一个由空格分隔的值列表,role1 role2

区块的正式角色语法

您可以使用命名属性来定义角色,这是向元素添加角色的详细语法。使用此语法时,向块属性列表的任何位置添加属性名 role,后面跟上等号(=),然后是角色名称或名称。

使用正式语法指定角色的侧边栏区块
[role=rolename]
****
这是一个分栏,它被分配了一个角色,rolename。
****

使用空格分隔多个角色值。由于值中包含空格,如果用引号括起来会更易于阅读,尽管引号并非严格要求。

使用正式语法分配了两个角色的边栏
[role="role1 role2"]
****
This is a sidebar with two roles assigned to it, role1 and role2.
****

在这种形式下,role属性的值已经是正确的形式,可以直接传递给输出。不需要对它进行任何额外处理。

这种长格式语法也可以用于行内宏,但不能用于格式化(又称引用)文本。

为格式化的内联元素分配角色

你可以为被格式化语法包围的内联元素分配角色,例如加粗(*)、斜体(_)和等宽字体(`)。要为被格式化语法块包围的内联元素分配角色,在属性列表中以点(.`)为前缀添加值。

使用简写语法进行内联角色分配
这句话包含被赋予角色的*粗体内联内容* [.application]。

这句话包含了被赋予角色的`单空格文本`[.varname]。

HTML源代码的输出从使用简写语法进行内联角色分配显示如下。

HTML source code produced by 使用简写语法进行内联角色分配
<p>This sentence contains <strong class="application">bold inline content</strong> that&#8217;s assigned a role.</p>

<p>This sentence contains <code class="varname">monospace text</code> that&#8217;s assigned a role.</p>
</div>

从这个输出中你可以看到,在AsciiDoc中的角色被翻译成HTML中的CSS类名。因此,角色是注释文档元素的理想方式,这样你可以使用CSS为它们设置独特的样式。

这个角色通常用于一个短语上,以表示你可能会使用DocBook或DITA中的专用元素来表达的语义。