<selectedcontent>: 选定选项显示元素

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

<selectedcontent> HTML 元素用于在 <select> 元素内显示其当前选定的 <option> 元素的内容,该内容将显示在其第一个子 <button> 元素中。这使您能够自定义 <select> 元素的全部部分,也称为“可自定义的 selects”。

属性

此元素包含全局属性

描述

您将 <selectedcontent> 元素用作 <button> 元素的唯一子元素,而该 <button> 元素必须是 <select> 元素的第一个子元素。任何 <option> 元素(<select> 的其他唯一有效子元素)必须出现在 <button> 和嵌套的 <selectedcontent> 对之后。

html
<select>
  <button>
    <selectedcontent></selectedcontent>
  </button>
  <option></option>
  ...
</select>

<selectedcontent> 的后台工作原理

<selectedcontent> 元素包含当前选定 <option> 元素内容的一个克隆。浏览器使用 cloneNode() 来渲染此克隆。当选定的 <option> 更改时(例如,在 change 事件期间),<selectedcontent> 的内容将被新选定 <option> 的克隆替换。了解此行为很重要,尤其是在处理动态内容时。

警告:由于浏览器仅在选定的 <option> 更改时才更新 <selectedcontent>,因此在 <select> 渲染后对选定 <option> 内容进行的任何动态修改都不会克隆到 <selectedcontent>。您需要手动更新 <selectedcontent>。如果您使用的流行前端 JavaScript 框架会在初始渲染后动态更新 <option> 元素,请注意——结果可能与您在 <selectedcontent> 中期望的不符。

<selectedcontent> 的惰性

默认情况下,<select> 元素中的任何 <button> 都处于 惰性 (inert) 状态。因此,该按钮内的所有内容(包括 <selectedcontent>)也处于惰性状态。这意味着用户无法与 <selectedcontent> 内的内容进行交互或聚焦。

使用 CSS 为选定选项的内容设置样式

您可以定位当前选定的 <option> 元素的内容,并设置其在 select 按钮中显示的方式。设置按钮的样式不会影响克隆的 <option> 内容的样式。这允许您自定义选定选项在按钮中的外观,而与它们在下拉列表中的外观分开。

例如,您的 <option> 元素可能包含图标、图像甚至视频,它们在下拉列表中可以很好地渲染,但可能导致 select <button> 变大、看起来杂乱并影响周围的布局。通过定位 <selectedcontent> 中的内容,您可以隐藏按钮中的元素(如图像),而不会影响它们在下拉列表中的显示方式,如下面的代码片段所示:

css
selectedcontent img {
  display: none;
}

注意:如果 <button> 和/或 <selectedcontent> 元素未包含在 <select> 中,浏览器会创建一个隐式的 <button> 来显示选定 <option> 的内容。此回退按钮无法使用 buttonselectedcontent 类型选择器通过 CSS 进行定位。

示例

您可以在我们的 可自定义 select 元素指南中找到包含 <selectedcontent> 元素的完整示例。

技术摘要

内容类别 None
允许内容 镜像选定 <option> 元素的内容。
标签省略 无,起始标签和结束标签都必须存在。
允许父级 一个 <button> 元素,它是 <select> 元素的第一个子元素。
隐式 ARIA 角色 None
允许的 ARIA 角色 None
DOM 接口 HTMLSelectedContentElement

规范

规范
HTML
# the-selectedcontent-element

浏览器兼容性

另见