---
id: "popover"
title: "气泡浮层与下拉菜单"
category: "浮层组件"
document_type: "component-specification"
spec_status: "local-current-draft"
element_ui: "2.15.6"
vue: "2.6.14"
page: "../index.html#spec-popover"
source_data: "../component-data.json"
official_components: ["dropdown", "dropdown-menu", "dropdown-item", "popover"]
template_components: ["el-button", "el-dropdown", "el-dropdown-item", "el-dropdown-menu", "el-popover"]
scenario_count: 6
verification: "scenario-checklist-not-full-test-pass"
---

# 气泡浮层与下拉菜单

专题 `popover` · 浮层组件 · Element UI 2.15.6

## 适用范围与组件映射

公共色板及字体基线适用于整个运营后台。本库整理基础组件、组件状态和可复用的组合模式；本轮补齐表单整体验证、页面布局和导航组合；具体业务字段与跨页流程仍在业务场景中说明。专题验收清单包含接入要求，不表示当前示例已实现或已验证全部场景。

官方条目映射：`dropdown`、`dropdown-menu`、`dropdown-item`、`popover`。

本页模板直接使用的 Element UI 标签：`el-button`、`el-dropdown`、`el-dropdown-item`、`el-dropdown-menu`、`el-popover`。

## 通用基线

- 组件库：Element UI **2.15.6**；运行样例 Vue **2.6.14**。
- 系统中文字体：macOS 优先苹方，Windows 通常微软雅黑；工程顺序固定为 `"PingFang SC", "Microsoft YaHei", sans-serif`。不要求安装或加载网络字体，兼容回退不是另一套可选样式。
- 后续仅采用经验证且固定版本的兼容 Element UI 2.x；Element Plus 属于独立迁移路线。
- 正文、数据值、输入及已选值：`14px / 400 / 21px`，`#303133`。
- 表头及组件分组标题：`14px / 600 / 21px`；弹窗标题：`16px / 600 / 24px`，均使用 `#303133`。
- 辅助说明：`12px / 400 / 18px`，`#595959`；错误、链接、状态、禁用与占位按各自语义处理。
- 适用组件的默认尺寸为 `small / 32px`；不得将这一高度机械应用于表格、文本域、浮层等全部组件。
- 规范正文与场景说明使用 `14px / 400 / 24px`、`#303133`，不降成灰蓝小字。
- 筛选文本输入占位统一“请输入”；未选择下拉统一“请选择”；默认全部的下拉显示“全部”。字段标签保留业务含义；日期保留开始/结束语义。
- 次级文字操作（查看更多、编辑、详情、数据中心、更多）：`12px / 400 / 18px`，`#3377BB`；保留点击热区。
- 本规范库的深色目录、蓝色展示区属于文档排版，不是业务组件颜色或业务导航规范。

## 本页用法与分类

默认用法：本页默认通过点击打开无页面遮罩的气泡浮层；“更多操作”使用同样点击触发的命令菜单。

| 区分什么 | 本页内容 | 选用或触发条件 |
| --- | --- | --- |
| 内容用途 | 气泡浮层承载小段可交互内容，菜单承载一组操作命令。 | 需要说明加内部按钮时用气泡；需要从多个命令中选择时用菜单。 |
| 触发配置 | 点击、悬停等属于打开方式，不是视觉样式。 | 本页采用点击打开；其他打开方式只有业务明确需要并完成键盘处理后再接入。 |
| 尺寸与位置 | 浮层宽度和出现位置按内容与可见空间安排。 | 本页内容气泡宽240px、从下方出现；实际接入应约束在视口内，不用尺寸区分业务风险。 |
| 交互状态 | 菜单定位、禁用与关闭后的焦点由操作和能力决定。 | 可执行项响应定位与选择；禁用项不执行，主动关闭回入口，外点关闭保留新焦点。 |

使用边界：不要把菜单和内容气泡仅当两种皮肤；也不要把本页未采用的悬停/手动触发写成当前可选配置。

## 组件规则

- **POPOVER-R01**：包含按钮或选项时用可交互浮层；按钮声明 aria-expanded 和 aria-controls。当前样例打开后聚焦内部关闭按钮；主动关闭或退出键关闭后回到触发器；点击外部关闭时保留用户新选择的焦点。
- **POPOVER-R02**：菜单选择后关闭；点击外部或 退出键 关闭；浮层宽度受视口约束。层级高于表格固定列。
- **POPOVER-R03**：菜单项不能用无法聚焦的普通 div。禁用项明确原因并阻止触发。
- **POPOVER-R04**：【公共用色】颜色仅从公共色值 引用：主色系 3 个基础色值、辅助功能色 3 个、中性色 10 个，共 16 个基础色值。角色可以多个，实际色值复用；不为每个组件、悬停 或不同字段再新增近似颜色。透明效果仅限遮罩 35% 与阴影 12%，从 外壳深色 派生。
- **POPOVER-R05**：【统一字体】统一系统中文字体：macOS 优先苹方（PingFang SC），Windows 通常使用微软雅黑（Microsoft YaHei）；工程顺序固定为 "PingFang SC", "Microsoft YaHei", sans-serif。使用设备已有字体，不要求安装或加载网络字体；最后一项仅作兼容回退，不是供页面作者任选的另一套样式。正文 14px/400/21px；表头与分组标题 14px/600/21px，弹窗标题 16px/600/24px；次级文字操作和辅助说明 12px/400/18px。正文与标题同用 #303133；不通过额外加粗或透明度改变正文轻重。
- **POPOVER-R06**：【叠加优先级】状态叠加规则：禁用阻断交互；输入类控件错误边框覆盖蓝色聚焦边框；输入框不叠加外圈或阴影，其他无边框操作保留键盘焦点提示；选中底覆盖悬停底；只读不等于禁用；加载不等于成功；业务启用/停用的文字结果不等于控件是否可点击。
- **POPOVER-R07**：【浮层与菜单】白底、正文深灰、边框灰与公共阴影；普通浮层不叠加页面遮罩。
- **POPOVER-R08**：【菜单定位】普通项正文深灰；悬停或键盘定位浅灰背景、操作蓝文字；危险项保持错误红，不能因悬停变成普通蓝。
- **POPOVER-R09**：【执行与焦点】普通文字动作操作蓝，危险文字动作错误红；可执行入口保留操作蓝焦点，按钮按各自层级规范。
- **POPOVER-R10**：【禁用与关闭】不可执行项使用禁用灰并阻止选择；主动关闭或退出键关闭恢复触发器焦点，点击外部保留新的焦点；不给浮层整体增加选中色。
- **POPOVER-R11**：【组件边界】气泡浮层和下拉菜单默认不带模态遮罩；菜单项不自动拥有勾选/半选，只有实际可选菜单才表示当前选择。

## 场景与验收清单

以下为需核对的场景组；`[ ]` 不代表已经测试通过。

- [ ] **POPOVER-S01**：当前示例采用点击打开：气泡承载说明与关闭按钮，菜单承载操作命令。悬停、聚焦或手动控制等其他触发方式由宿主按用途选择并单独接入验收。
- [ ] **POPOVER-S02**：打开焦点 / 外部关闭 / 退出键 / 关闭回焦点 / 长内容滚动
- [ ] **POPOVER-S03**：下拉菜单的点击或悬停触发、按钮与菜单分开操作、禁用项、选择后动作、分组分隔和键盘操作。
- [ ] **POPOVER-S04**：本页核对气泡白底、菜单普通/悬停/键盘定位和禁用项，以及打开、主动关闭与外部关闭的焦点行为；浮层容器不套输入错误、持续选中或半选状态。
- [ ] **POPOVER-S05**：核对正文14/400、次级操作12/400、标题600及同色深正文；检查实际弹出层和内部文字节点，不能只检查父元素。
- [ ] **POPOVER-S06**：当前气泡浮层：打开后焦点进入关闭按钮；内部按退出键或点击关闭恢复触发器，点击外部不抢走外部焦点；展开状态与受控浮层标识保持同步。

### 专题验收重点

检查打开、选择和关闭：主动关闭或退出键关闭后回到触发器；点击外部关闭时保留新点击目标的焦点。

## 当前示例模板

以下来自本专题的结构化示例，使用 Vue 2 模板语法。`v-model`、事件方法、数据列表等依赖 [components.js](../components.js)；完整样式文件及加载顺序见 [通用基线](FOUNDATIONS.md)。自定义组合标签的内部实现由下方依赖文件提供，不能仅复制标签作为完整组件。

```html
<div class="demo-line">
<el-popover ref="demoPopover" placement="bottom" width="240" v-model="popoverVisible" trigger="click" @after-enter="enterPopover" @after-leave="leavePopover">
<div @keydown.esc.stop.prevent="closePopover">
<p>交互内容使用气泡浮层</p>
<el-button ref="demoPopoverClose" size="small" @click="closePopover">关闭浮层</el-button>
</div>
<el-button ref="demoPopoverTrigger" slot="reference" :aria-expanded="String(popoverVisible)" aria-haspopup="dialog" @keydown.native.esc.stop.prevent="closePopover">打开气泡浮层</el-button>
</el-popover>
<el-dropdown trigger="click" @command="notify">
<el-button>更多操作 <i class="el-icon-arrow-down">
</i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="动作 A">动作 A</el-dropdown-item>
<el-dropdown-item command="动作 B">动作 B</el-dropdown-item>
<el-dropdown-item disabled>不可用（禁用示例）</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
```

## 交付与使用边界

- 规范条款、示例代码与待验收场景分开理解；有示例不等于已覆盖所有样式、交互状态和使用场景。
- 业务接口、权限、时区、金额精度、数据规模等依赖应从实际项目读取，不使用演示值代替生产约定。
- 发生样式或文案变更时，同步专题数据、页面与 Markdown，避免规范和样例分离。

## 来源与关联

- 来源线索：本次补充。
- [打开本专题页面](../index.html#spec-popover)
- [通用基线](FOUNDATIONS.md)
- [规范总索引](README.md)
- [结构化规范数据](../component-data.json)（记录 id：`popover`）
- [原始历史样板](../original-20260621.html)
- [历史规范条目](../spec-notes.json)

## 本组件颜色状态表

| 状态 / 条件 | 统一规则 |
| --- | --- |
| 浮层与菜单 | 白底、正文深灰、边框灰与公共阴影；普通浮层不叠加页面遮罩。 |
| 菜单定位 | 普通项正文深灰；悬停或键盘定位浅灰背景、操作蓝文字；危险项保持错误红，不能因悬停变成普通蓝。 |
| 执行与焦点 | 普通文字动作操作蓝，危险文字动作错误红；可执行入口保留操作蓝焦点，按钮按各自层级规范。 |
| 禁用与关闭 | 不可执行项使用禁用灰并阻止选择；主动关闭或退出键关闭恢复触发器焦点，点击外部保留新的焦点；不给浮层整体增加选中色。 |

气泡浮层和下拉菜单默认不带模态遮罩；菜单项不自动拥有勾选或半选。本页可演示点击开关、外点关闭、关闭按钮与退出键、关闭后焦点返回，以及展开状态和关联面板的语义属性；宿主接入后需按实际内容重新验收。

[公共颜色与字体 token](../color-tokens.json) · [公共组件样式](../color-contract.css) · [系统字体合同（最后加载）](../font-contract.css)

## 业务落地场景

- [会员列表 · 会员行操作 · 更多下拉菜单](../../showcase/index.html#members) · [场景文档](../../showcase/docs/members.md)
- [运营总览 · 图表点详情浮层](../../showcase/index.html#overview) · [场景文档](../../showcase/docs/overview.md)

[竞品组件拆解](../../reference-review/竞品组件反推规范.html) · [业务场景分类](../../业务场景分类清单.md)
