1. 4.14 没有专用元素的常用习惯用法
      1. 4.14.1 面包屑导航
      2. 4.14.2 标签云
      3. 4.14.3 对话
      4. 4.14.4 脚注
    2. 4.15 禁用元素
    3. 4.16 使用选择器和 CSS 匹配 HTML 元素
      1. 4.16.1 CSS 'attr()' 函数的大小写敏感性
      2. 4.16.2 选择器的大小写敏感性
      3. 4.16.3 伪类

4.14 没有专用元素的常用习惯用法

4.14.1 面包屑导航

本规范没有提供描述面包屑导航菜单的机器可读方式。鼓励作者只在一个段落中使用一系列链接。nav 元素可用于标记包含这些段落的区域为导航块。

在以下示例中,可以通过两种路径到达当前页面。

<nav>
 <p>
  <a href="/">Main</a><a href="/products/">Products</a><a href="/products/dishwashers/">Dishwashers</a><a>Second hand</a>
 </p>
 <p>
  <a href="/">Main</a><a href="/second-hand/">Second hand</a><a>Dishwashers</a>
 </p>
</nav>

4.14.2 标签云

本规范未定义任何专门用于标记应用于一组页面(也称为标签云)的关键字列表的标记。通常,鼓励作者使用 ul 元素标记此类列表,并使用显式内联计数,然后隐藏这些计数并使用样式表将其转换为表示效果,或者使用 SVG。

这里,三个标签包含在一个简短的标签云中

<style>
.tag-cloud > li > span { display: none; }
.tag-cloud > li { display: inline; }
.tag-cloud-1 { font-size: 0.7em; }
.tag-cloud-2 { font-size: 0.9em; }
.tag-cloud-3 { font-size: 1.1em; }
.tag-cloud-4 { font-size: 1.3em; }
.tag-cloud-5 { font-size: 1.5em; }

@media speech {
  .tag-cloud > li > span { display:inline }
}
</style>
...
<ul class="tag-cloud">
 <li class="tag-cloud-4"><a title="28 instances" href="/t/apple">apple</a> <span>(popular)</span>
 <li class="tag-cloud-2"><a title="6 instances"  href="/t/kiwi">kiwi</a> <span>(rare)</span>
 <li class="tag-cloud-5"><a title="41 instances" href="/t/pear">pear</a> <span>(very popular)</span>
</ul>

每个标签的实际频率使用 title 属性给出。提供了一个 CSS 样式表,用于将标记转换为不同大小的单词云,但对于不支持 CSS 或不是可视化的用户代理,标记包含注释(如“(流行)”或“(罕见)”)以按频率对各种标签进行分类,从而使所有用户都能从信息中受益。

使用 ul 元素(而不是 ol),因为顺序并不特别重要:虽然列表实际上按字母顺序排列,但如果按标签长度排序,它也会传达相同的信息。

tag rel 关键字在这些 a 元素上使用,因为它们不表示应用于页面本身的标签;它们只是索引列表中标签本身的一部分。

4.14.3 对话

本规范没有定义用于标记对话、会议记录、聊天记录、剧本中的对话、即时消息日志以及其他不同参与者轮流进行话语的情况的特定元素。

相反,鼓励作者使用 p 元素和标点符号标记对话。需要为样式目的标记说话者的作者鼓励使用 spanb。文本包含在 i 元素中的段落可用于标记舞台提示。

此示例使用艾伯特和科斯泰洛著名的小品《谁是第一》中的摘录演示了这一点

<p> Costello: Look, you gotta first baseman?
<p> Abbott: Certainly.
<p> Costello: Who's playing first?
<p> Abbott: That's right.
<p> Costello becomes exasperated.
<p> Costello: When you pay off the first baseman every month, who gets the money?
<p> Abbott: Every dollar of it.

以下摘录显示了如何使用 data 元素为每一行提供 Unix 时间戳来标记 IM 对话日志。请注意,时间戳采用 time 元素不支持的格式,因此使用 data 元素代替(即 Unix time_t 时间戳)。如果作者希望使用 time 元素支持的日期和时间格式之一标记数据,则可以使用该元素代替 data。这可能是有利的,因为它允许数据分析工具明确地检测时间戳,而无需与页面作者协调。

<p> <data value="1319898155">14:22</data> <b>egof</b> I'm not that nerdy, I've only seen 30% of the star trek episodes
<p> <data value="1319898192">14:23</data> <b>kaj</b> if you know what percentage of the star trek episodes you have seen, you are inarguably nerdy
<p> <data value="1319898200">14:23</data> <b>egof</b> it's unarguably
<p> <data value="1319898228">14:23</data> <i>* kaj blinks</i>
<p> <data value="1319898260">14:24</data> <b>kaj</b> you are not helping your case

HTML 无法很好地标记图形,因此游戏交互式对话的描述更难以标记。此示例显示了一种可能的约定,使用 dl 元素列出对话中每个点的可能回复。另一个需要考虑的选项是以 DOT 文件的形式描述对话,并将结果输出为 SVG 图像以放置在文档中。[DOT]

<p> Next, you meet a fisher. You can say one of several greetings:
<dl>
 <dt> "Hello there!"
 <dd>
  <p> She responds with "Hello, how may I help you?"; you can respond with:
  <dl>
   <dt> "I would like to buy a fish."
   <dd> <p> She sells you a fish and the conversation finishes.
   <dt> "Can I borrow your boat?"
   <dd>
    <p> She is surprised and asks "What are you offering in return?".
    <dl>
     <dt> "Five gold." (if you have enough)
     <dt> "Ten gold." (if you have enough)
     <dt> "Fifteen gold." (if you have enough)
     <dd> <p> She lends you her boat. The conversation ends.
     <dt> "A fish." (if you have one)
     <dt> "A newspaper." (if you have one)
     <dt> "A pebble." (if you have one)
     <dd> <p> "No thanks", she replies. Your conversation options
     at this point are the same as they were after asking to borrow
     her boat, minus any options you've suggested before.
    </dl>
   </dd>
  </dl>
 </dd>
 <dt> "Vote for me in the next election!"
 <dd> <p> She turns away. The conversation finishes.
 <dt> "Madam, are you aware that your fish are running away?"
 <dd>
  <p> She looks at you skeptically and says "Fish cannot run, miss".
  <dl>
   <dt> "You got me!"
   <dd> <p> The fisher sighs and the conversation ends.
   <dt> "Only kidding."
   <dd> <p> "Good one!" she retorts. Your conversation options at this
   point are the same as those following "Hello there!" above.
   <dt> "Oh, then what are they doing?"
   <dd> <p> She looks at her fish, giving you an opportunity to steal
   her boat, which you do. The conversation ends.
  </dl>
 </dd>
</dl>

在一些游戏中,对话更简单:每个角色仅仅有一组固定的台词。在此示例中,游戏常见问题解答/攻略列出了每个角色的一些已知可能的回复

<section>
 <h1>Dialogue</h1>
 <p><small>Some characters repeat their lines in order each time you interact
 with them, others randomly pick from amongst their lines. Those who respond in
 order have numbered entries in the lists below.</small>
 <h2>The Shopkeeper</h2>
 <ul>
  <li>How may I help you?
  <li>Fresh apples!
  <li>A loaf of bread for madam?
 </ul>
 <h2>The pilot</h2>
 <p>Before the accident:
 <ul>
  <li>I'm about to fly out, sorry!
  <li>Sorry, I'm just waiting for flight clearance and then I'll be off!
 </ul>
 <p>After the accident:
 <ol>
  <li>I'm about to fly out, sorry!
  <li>Ok, I'm not leaving right now, my plane is being cleaned.
  <li>Ok, it's not being cleaned, it needs a minor repair first.
  <li>Ok, ok, stop bothering me! Truth is, I had a crash.
 </ol>
 <h2>Clan Leader</h2>
 <p>During the first clan meeting:
 <ul>
  <li>Hey, have you seen my daughter? I bet she's up to something nefarious again...
  <li>Nice weather we're having today, eh?
  <li>The name is Bailey, Jeff Bailey. How can I help you today?
  <li>A glass of water? Fresh from the well!
 </ul>
 <p>After the earthquake:
 <ol>
  <li>Everyone is safe in the shelter, we just have to put out the fire!
  <li>I'll go and tell the fire brigade, you keep hosing it down!
 </ol>
</section>

4.14.4 脚注

HTML 没有用于标记脚注的专用机制。以下是建议的替代方案。


对于简短的内联注释,可以使用 title 属性。

在此示例中,对话的两个部分使用 title 属性用类似脚注的内容进行注释。

<p> <b>Customer</b>: Hello! I wish to register a complaint. Hello. Miss?
<p> <b>Shopkeeper</b>: <span title="Colloquial pronunciation of 'What do you'"
>Watcha</span> mean, miss?
<p> <b>Customer</b>: Uh, I'm sorry, I have a cold. I wish to make a complaint.
<p> <b>Shopkeeper</b>: Sorry, <span title="This is, of course, a lie.">we're
closing for lunch</span>.

不幸的是,目前不鼓励依赖 title 属性,因为许多用户代理不会以本规范要求的可访问方式公开该属性(例如,需要使用鼠标之类的指向设备才能显示工具提示,这排除了仅限键盘的用户和仅限触摸的用户,例如任何拥有现代手机或平板电脑的用户)。

如果使用 title 属性,则可以使用 CSS 来吸引读者注意具有该属性的元素。

例如,以下 CSS 在具有 title 属性的元素下方放置一条虚线。

[title] { border-bottom: thin dashed; }

对于较长的注释,应使用 a 元素,指向文档中后面的元素。约定是链接的内容为方括号中的数字。

在此示例中,对话中的脚注链接到对话下方的段落。然后,该段落反过来链接回对话,允许用户返回到脚注的位置。

<p> Announcer: Number 16: The <i>hand</i>.
<p> Interviewer: Good evening. I have with me in the studio tonight
Mr Norman St John Polevaulter, who for the past few years has been
contradicting people. Mr Polevaulter, why <em>do</em> you
contradict people?
<p> Norman: I don't. <sup><a href="#fn1" id="r1">[1]</a></sup>
<p> Interviewer: You told me you did!
...
<section>
 <p id="fn1"><a href="#r1">[1]</a> This is, naturally, a lie,
 but paradoxically if it were true he could not say so without
 contradicting the interviewer and thus making it false.</p>
</section>

对于旁注,即应用于整个文本部分而不是特定单词或句子的较长注释,应使用 aside 元素。

在此示例中,在对话之后给出了一个侧边栏,提供了一些上下文。

<p> <span class="speaker">Customer</span>: I will not buy this record, it is scratched.
<p> <span class="speaker">Shopkeeper</span>: I'm sorry?
<p> <span class="speaker">Customer</span>: I will not buy this record, it is scratched.
<p> <span class="speaker">Shopkeeper</span>: No no no, this's'a tobacconist's.
<aside>
 <p>In 1970, the British Empire lay in ruins, and foreign
 nationalists frequented the streets — many of them Hungarians
 (not the streets — the foreign nationals). Sadly, Alexander
 Yalt has been publishing incompetently-written phrase books.
</aside>

对于图形或表格,可以在相关的 figcaptioncaption 元素中或在周围的散文文本中包含脚注。

在此示例中,表格的单元格包含脚注,这些脚注在散文中给出。使用 figure 元素为表格及其脚注的组合提供单个图例。

<figure>
 <figcaption>Table 1. Alternative activities for knights.</figcaption>
 <table>
  <tr>
   <th> Activity
   <th> Location
   <th> Cost
  <tr>
   <td> Dance
   <td> Wherever possible
   <td> £0<sup><a href="#fn1">1</a></sup>
  <tr>
   <td> Routines, chorus scenes<sup><a href="#fn2">2</a></sup>
   <td> Undisclosed
   <td> Undisclosed
  <tr>
   <td> Dining<sup><a href="#fn3">3</a></sup>
   <td> Camelot
   <td> Cost of ham, jam, and spam<sup><a href="#fn4">4</a></sup>
 </table>
 <p id="fn1">1. Assumed.</p>
 <p id="fn2">2. Footwork impeccable.</p>
 <p id="fn3">3. Quality described as "well".</p>
 <p id="fn4">4. A lot.</p>
</figure>

4.15 禁用元素

如果元素属于以下情况之一,则称该元素实际上已禁用

此定义用于确定哪些元素可聚焦,以及哪些元素与 :enabled:disabled 伪类 匹配。

4.16 使用选择器和 CSS 匹配 HTML 元素

4.16.1 CSS 'attr()' 函数的大小写敏感性

CSS 值和单位'attr()' 函数的目的属性名称的大小写敏感性留给宿主语言定义。[CSSVALUES]

当将 CSS 'attr()' 函数的属性名称部分与 HTML 元素 上无命名空间属性的名称进行比较时HTML 文档,CSS 'attr()' 函数的名称部分必须首先转换为 ASCII 小写。当与其他属性进行比较时,相同函数必须根据其原始大小写进行比较。在这两种情况下,要匹配,值必须与彼此相同(因此比较区分大小写)。

这与比较 CSS 属性选择器的名称部分相同,下一节中对此进行了说明。

4.16.2 选择器的区分大小写

Selectors 将元素名称、属性名称和属性值的区分大小写留给宿主语言定义。 [SELECTORS]

当将 CSS 元素 类型选择器HTML 文档HTML 元素 的名称进行比较时,CSS 元素 类型选择器 必须首先 转换为 ASCII 小写。当与其他元素比较时,相同的选择器必须根据其原始大小写进行比较。在这两种情况下,要匹配,值必须 完全相同(因此比较区分大小写)。

当将 CSS 属性选择器 的名称部分与 HTML 文档HTML 元素 上的属性名称进行比较时,CSS 属性选择器 的名称部分必须首先 转换为 ASCII 小写。当与其他属性比较时,相同的选择器必须根据其原始大小写进行比较。在这两种情况下,比较都区分大小写。

属性选择器HTML 文档 中的 HTML 元素 上必须将具有以下名称的属性的视为 ASCII 不区分大小写

例如,选择器 [bgcolor="#ffffff"] 将匹配任何具有 bgcolor 属性且值包括 #ffffff#FFFFFF#fffFFF 的 HTML 元素。即使 bgcolor 对给定元素没有影响(例如,div),也会发生这种情况。

选择器 [type=a s] 将匹配任何具有 type 属性且其值为 a 的 HTML 元素,但由于 s 标志,其值不为 A 的元素则不匹配。

所有其他属性值以及其他所有内容都必须被视为完全 相同,用于选择器匹配的目的。这包括

Selectors 定义了 ID 和类选择器(例如 #foo.bar),当与处于 怪异模式 的文档中的元素匹配时,将以 ASCII 不区分大小写 的方式进行匹配。但是,这并不适用于将“id”或“class”作为名称部分的属性选择器。选择器 [class="foobar"] 将其值视为区分大小写,即使在 怪异模式 中也是如此。

4.16.3 伪类

伪类

可以使用许多动态选择器与 HTML 结合使用。本节定义了这些选择器何时匹配 HTML 元素。 [SELECTORS] [CSSUI]

:defined

:defined

所有当前引擎都支持。

Firefox63+Safari10+Chrome54+
Opera?Edge79+
Edge (Legacy)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

:defined 伪类 必须匹配任何 已定义 的元素。

:link

:link

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera3.5+Edge79+
Edge (Legacy)12+Internet Explorer3+
Firefox Android?Safari iOS3.2+Chrome Android?WebView Android1.5+Samsung Internet?Opera Android?
:visited

:visited

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera3.5+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

所有具有 href 属性的 a 元素,以及所有具有 href 属性的 area 元素,必须匹配 :link:visited 中的一个。

其他规范可能会应用更具体的规则,关于这些元素如何匹配这些 伪类,以减轻此要求的直接实现中的一些隐私问题。

:active

:active

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera5+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

:active 伪类 定义为匹配 当用户激活元素时 的元素。

为了确定某个特定元素是否 被激活(仅用于定义 :active 伪类),HTML 用户代理必须使用以下列表中的第一个相关条目。

如果元素是 button 元素
如果元素是 input 元素,其 type 属性处于 提交按钮图像按钮重置按钮按钮 状态
如果元素是具有 href 属性的 a 元素
如果元素是具有 href 属性的 area 元素
如果元素 可聚焦

如果元素 处于正式激活状态,则该元素 被激活

例如,如果用户使用键盘通过按空格键按下 button 元素,则该元素将在元素收到 keydown 事件的时间与元素收到 keyup 事件的时间之间匹配此 伪类

如果元素 正被主动指向

该元素 被激活

当用户开始表示触发元素的 激活行为 的意图,以及用户停止表示触发元素的 激活行为 的意图的时间或元素的 激活行为 完成运行的时间(以先发生者为准)之间,则称该元素 处于正式激活状态

当用户使用指向设备指示元素且该指向设备处于“按下”状态时,则称该元素处于活动指向状态(例如,对于鼠标,在鼠标按钮按下到松开之间的时间;对于多点触控环境中的手指,在手指触碰显示屏表面时)。

根据选择器中的定义,:active也匹配扁平树中处于激活状态的元素的祖先元素。 [SELECTORS]

此外,任何作为当前匹配:activelabel元素的关联控件的元素,也匹配:active。(但它不计入激活状态。)

:hover

:hover

所有当前引擎都支持。

Firefox1+Safari2+Chrome1+
Opera4+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

:hover 伪类被定义为匹配一个元素,当用户使用指向设备指定该元素时。为了定义:hover 伪类,HTML用户代理必须将用户使用指向设备指示的元素视为用户指定的元素。

根据选择器中的定义,:hover也匹配扁平树中处于指定状态的元素的祖先元素。[SELECTORS]

此外,任何作为当前匹配:hoverlabel元素的关联控件的元素,也匹配:hover。(但它不计入指定状态。)

特别考虑以下片段:

<p> <label for=c> <input id=a> </label> <span id=b> <input id=c> </span> </p>

如果用户使用指向设备指定了 ID 为“a”的元素,则p元素(及其在以上代码片段中未显示的所有祖先)、label元素、ID 为“a”的元素和 ID 为“c”的元素将匹配:hover 伪类。ID 为“a”的元素通过处于指定状态来匹配;labelp元素由于选择器中关于扁平树祖先的条件而匹配;ID 为“c”的元素通过以上关于关联控件的附加条件匹配(即,其label元素匹配:hover)。但是,ID 为“b”的元素匹配:hover:其扁平树后代未被指定,即使该扁平树后代匹配:hover

:focus

:focus

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera7+Edge79+
Edge (旧版)12+Internet Explorer8+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

对于 CSS :focus 伪类,当以下条件满足时,元素获得焦点

:target

:target

所有当前引擎都支持。

Firefox1+Safari1.3+Chrome1+
Opera9.5+Edge79+
Edge (旧版)12+Internet Explorer9+
Firefox Android?Safari iOS2+Chrome Android?WebView Android2+Samsung Internet?Opera Android10.1+

对于 CSS :target 伪类文档目标元素是一个列表,其中包含文档目标元素(如果它不为 null),或者不包含任何元素(如果它为 null)。[SELECTORS]

:popover-open

:popover-open

所有当前引擎都支持。

Firefox🔰 114+Safari预览版+Chrome114+
Opera?Edge114+
Edge (Legacy)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

:popover-open 伪类被定义为匹配任何HTML 元素,其popover属性不在无弹出窗口状态中,且其弹出窗口可见性状态显示

:enabled

:enabled

所有当前引擎都支持。

Firefox1+Safari3.1+Chrome1+
Opera9+Edge79+
Edge (旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android2+Samsung Internet?Opera Android10.1+

:enabled 伪类必须匹配任何buttoninputselecttextareaoptgroupoptionfieldset元素或与表单关联的自定义元素,且这些元素未被禁用

:disabled

:disabled

所有当前引擎都支持。

Firefox1+Safari3.1+Chrome1+
Opera9+Edge79+
Edge (旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android2+Samsung Internet?Opera Android10.1+

:disabled 伪类必须匹配任何已禁用的元素。

:checked

:checked

所有当前引擎都支持。

Firefox1+Safari3.1+Chrome1+
Opera9+Edge79+
Edge (旧版)12+Internet Explorer9+
Firefox Android4+Safari iOS?Chrome Android18+WebView Android2+Samsung Internet?Opera Android10.1+

:checked 伪类必须匹配属于以下任意类别的元素

:indeterminate

:indeterminate

所有当前引擎都支持。

Firefox2+Safari3+Chrome1+
Opera9+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS1+Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:indeterminate 伪类必须匹配属于以下任意类别的元素

:default

:default

所有当前引擎都支持。

Firefox4+Safari5+Chrome10+
Opera10+Edge79+
Edge (Legacy)?Internet Explorer不支持
Firefox Android?Safari iOS5+Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:default 伪类必须匹配属于以下任一类别的任何元素。

:placeholder-shown

:placeholder-shown 伪类必须匹配属于以下任一类别的任何元素。

:valid

:valid

所有当前引擎都支持。

Firefox4+Safari5+Chrome10+
Opera10+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS5+Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:valid 伪类必须匹配属于以下任一类别的任何元素。

:invalid

:invalid

所有当前引擎都支持。

Firefox4+Safari5+Chrome10+
Opera10+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS5+Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:invalid 伪类必须匹配属于以下任一类别的任何元素。

:user-valid

:user-valid 伪类必须匹配inputtextareaselect 元素,其用户有效性为 true,是约束验证候选者,并且满足其约束条件

:user-invalid

:user-invalid 伪类必须匹配inputtextareaselect 元素,其用户有效性为 true,是约束验证候选者,但不满足其约束条件

:in-range

:in-range

所有当前引擎都支持。

Firefox29+Safari5.1+Chrome10+
Opera11+Edge79+
Edge (旧版)13+Internet Explorer不支持
Firefox Android16+Safari iOS?Chrome Android?WebView Android2.2+Samsung Internet1.0+Opera Android11+

:in-range 伪类必须匹配所有是约束验证候选者具有范围限制,并且既没有下溢也不没有溢出的元素。

:out-of-range

:out-of-range

所有当前引擎都支持。

Firefox29+Safari5.1+Chrome10+
Opera11+Edge79+
Edge (旧版)13+Internet Explorer不支持
Firefox Android16+Safari iOS?Chrome Android?WebView Android2.2+Samsung Internet?Opera Android11+

:out-of-range 伪类必须匹配所有是约束验证候选者具有范围限制,并且存在下溢存在溢出的元素。

:required

:required

所有当前引擎都支持。

Firefox4+Safari5+Chrome10+
Opera10+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS5+Chrome Android?WebView Android4.4.3+Samsung Internet?Opera Android10.1+

:required 伪类必须匹配属于以下任一类别的任何元素。

:optional

:optional

所有当前引擎都支持。

Firefox4+Safari5+Chrome10+
Opera10+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS5+Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:optional 伪类必须匹配属于以下任一类别的任何元素。

:autofill

:autofill

Firefox86+Safari15+Chrome🔰 1+
Opera?Edge🔰 79+
Edge (Legacy)?Internet Explorer不支持
Firefox Android?Safari iOS15+Chrome Android?WebView Android?Samsung Internet?Opera Android?
:-webkit-autofill

:autofill:-webkit-autofill 伪类必须匹配已被用户代理自动填充的input 元素。如果用户编辑了自动填充的字段,则这些伪类必须停止匹配。

自动填充可能通过 autocomplete 属性实现,但即使没有该属性,用户代理也可能自动填充。

:read-only

:read-only

所有当前引擎都支持。

Firefox78+Safari4+Chrome1+
Opera9+Edge79+
Edge (旧版)13+Internet Explorer不支持
Firefox Android🔰 4+Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+
:read-write

:read-write

所有当前引擎都支持。

Firefox78+Safari4+Chrome1+
Opera9+Edge79+
Edge (旧版)13+Internet Explorer不支持
Firefox Android🔰 4+Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+

:read-write 伪类 必须匹配属于以下任意类别的元素,出于选择器的目的,这些元素被视为用户可更改的:[SELECTORS]

:read-only 伪类 必须匹配所有其他 HTML 元素

:modal

:modal 伪类 必须匹配属于以下任意类别的元素

:dir(ltr)

:dir

Firefox49+Safari16.4+Chrome不支持
Opera?Edge不支持
Edge (Legacy)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

:dir(ltr) 伪类 必须匹配所有 方向性 为 'ltr' 的元素。

:dir(rtl)

:dir(rtl) 伪类 必须匹配所有 方向性 为 'rtl' 的元素。

自定义状态伪类

:state(identifier) 伪类必须匹配所有 自定义元素,其 状态集集合项 包含 identifier

:playing

:playing 伪类 必须匹配所有 媒体元素,其 paused 属性为 false。

:paused

:paused 伪类 必须匹配所有 媒体元素,其 paused 属性为 true。

:seeking

:seeking 伪类 必须匹配所有 媒体元素,其 seeking 属性为 true。

:buffering

:buffering 伪类 必须匹配所有 媒体元素,其 paused 属性为 false,networkState 属性为 NETWORK_LOADING,并且就绪状态为 HAVE_CURRENT_DATA 或更低。

:stalled

:stalled 伪类 必须匹配所有 媒体元素,这些元素匹配 :buffering 伪类 且其 is currently stalled 为 true。

:muted

:muted 伪类 必须匹配所有 媒体元素,这些元素已 静音

:volume-locked

:volume-locked 伪类 必须匹配所有 媒体元素,此时用户代理的 音量锁定 为 true。

本规范未定义元素何时匹配 :lang() 动态 伪类,因为它在 Selectors 中以与语言无关的方式进行了充分详细的定义。 [SELECTORS]