COMPONENT 90 · Content & Media
附件卡片
Attachment
也叫File Attachment文件附件附件预览
展示一个文件的身份,并提供预览与移除操作。
Represent a file with identifying details and attachment actions.
ANATOMY & USAGE
结构与使用建议
组成部分
- 文件信息
- 预览操作
- 移除操作
适合使用
- 消息、评论或表单中表达已附加的文件。
不建议使用
- 选择本机文件应使用 File Upload,附件卡片本身不代表已上传成功。
键盘与无障碍
- 提供可读文件名、类型和状态,移除按钮带上目标文件名。
- 展开用 aria-expanded 与 aria-controls,按钮不嵌套在另一个按钮内。
参考 shadcn/ui · Attachment ↗核对于 2026-09-05
DESCRIBE IT TO AI
这样告诉编程助手
实现附件卡片(Attachment):展示一个文件的身份,并提供预览与移除操作。
MINIMAL RUNNABLE CODE
可复制代码
原生与 React 两套实现,不依赖第三方组件库。
READ ONLY · SAFE TO COPY
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<section class="modern-demo">
<article class="modern-attachment">
<span class="modern-filetype" aria-hidden="true">TXT</span>
<div><strong>组件笔记.txt</strong><small>纯文本 · 本地示例</small></div>
<button id="remove" aria-label="移除组件笔记.txt">×</button>
</article>
<button id="toggle" aria-expanded="false" aria-controls="preview">
预览组件笔记
</button>
<div id="preview" hidden>附件展示文件名称与状态;文件上传负责选择和提交文件。</div>
<button id="restore" hidden>恢复附件</button>
<p id="status" role="status"></p>
</section>
<script src="script.js" defer></script>
</body>
</html>