# @aria-ui/elements 中文文档

规范地址：https://npmcn.com/package/%40aria-ui/elements/

版本：0\.2\.0
npm 元数据更新时间：2026-10-21T10:33:05.117Z
中文译文更新时间：2026-11-06T18:42:06.283Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aria-ui/elements
原文对照：https://npmcn.com/package/%40aria-ui/elements/?lang=original
源码仓库：https://github.com/ocavue/aria-ui

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：445 kB，89 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2026-03-29T10:16:21.539Z
- 最新版本发布：2026-10-21T10:33:04.570Z
- 近 30 天下载量：111301（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：28（近 12 个月 28 个）

## 中文简介

未命名的光- DOM- 只有Web 组件

## 安装

```sh
npm install @aria-ui/elements
```

也可以使用：`pnpm add @aria-ui/elements`、`yarn add @aria-ui/elements`、`bun add @aria-ui/elements`

## README

# @aria-ui/要素

一组无风格,可访问 **光- DOM- 只有网络组件** 用于构建用户界面。 被Radix UI和Ark UI所启发,但作为本地自定义元素被运出,在任何框架——或平面HTML中工作.

**播放场 :** [https://aria-ui.pages.dev/ (中文(简体) )](https://aria-ui.pages.dev/)

## 特征

-   **只有轻度DOM.** 没有Shadow DOM,所以你的全局风格表,Tailwind课,和选择者喜欢 `[aria-selected="true"]` 或者说 `[data-active]` 直接应用到您放入页面的元素.
-   **设计上没有风格.** 每一个组件舰只0 CSS. 国家通过标准ARIA属性和 `data-*` 属性可以任意样式.
-   **建于WAI-ARIA APG上.** 键盘交互、焦点管理和ARIA作用 [WAI-ARIA 授权做法指南](https://www.w3.org/WAI/ARIA/apg/) 模式.
-   **可编组部件.** 每个组成部分分为重点定制要素(`*-root`, (中文(简体) ), `*-trigger`, (中文(简体) ), `*-popup`, (中文(简体) ), `*-positioner`, (中文(简体) ), `*-item`通过共享商店进行交流.
-   **框架-不可知论.** 直接使用 HTML 中的元素,或以 [`@aria-ui/cli`](https://www.npmjs.com/package/@aria-ui/cli) 用于反应,Vue,Solid,Preact,和斯维尔特.

## 构成部分

| 构成部分 | 自定义元素 |
| --- | --- |
| **列表框** | `aria-ui-listbox-root`, (中文(简体) ), `aria-ui-listbox-item`, (中文(简体) ), `aria-ui-listbox-empty` |
| **菜单** | `aria-ui-menu-root`, (中文(简体) ), `aria-ui-menu-trigger`, (中文(简体) ), `aria-ui-menu-positioner`, (中文(简体) ), `aria-ui-menu-popup`, (中文(简体) ), `aria-ui-menu-item`, (中文(简体) ), `aria-ui-menu-submenu-root`, (中文(简体) ), `aria-ui-menu-submenu-trigger` |
| **过量** | `aria-ui-popover-root`, (中文(简体) ), `aria-ui-popover-trigger`, (中文(简体) ), `aria-ui-popover-positioner`, (中文(简体) ), `aria-ui-popover-popup` |
| **工具提示** | `aria-ui-tooltip-root`, (中文(简体) ), `aria-ui-tooltip-trigger`, (中文(简体) ), `aria-ui-tooltip-positioner`, (中文(简体) ), `aria-ui-tooltip-popup` |

## 安装

```bash
npm install @aria-ui/elements
# or
pnpm add @aria-ui/elements
```

## 快开始

登记每个组件,单调:

```ts
import { registerElements } from '@aria-ui/elements'

registerElements()
```

然后在 HTML 中任意使用元素 :

```html
<aria-ui-popover-root>
  <aria-ui-popover-trigger tabindex="0">Open popover</aria-ui-popover-trigger>
  <aria-ui-popover-positioner>
    <aria-ui-popover-popup>
      <p>Hello from a popover!</p>
    </aria-ui-popover-popup>
  </aria-ui-popover-positioner>
</aria-ui-popover-root>
```

### 列表框示例

```html
<aria-ui-listbox-root>
  <aria-ui-listbox-item value="apple">Apple</aria-ui-listbox-item>
  <aria-ui-listbox-item value="banana">Banana</aria-ui-listbox-item>
  <aria-ui-listbox-item value="cherry">Cherry</aria-ui-listbox-item>
</aria-ui-listbox-root>
```

```ts
const listbox = document.querySelector('aria-ui-listbox-root')!
listbox.addEventListener('valueChange', (event) => {
  console.log('Selected:', event.detail)
})
```

### 菜单示例

```html
<aria-ui-menu-root>
  <aria-ui-menu-trigger tabindex="0">Actions</aria-ui-menu-trigger>
  <aria-ui-menu-positioner>
    <aria-ui-menu-popup>
      <aria-ui-menu-item value="cut">Cut</aria-ui-menu-item>
      <aria-ui-menu-item value="copy">Copy</aria-ui-menu-item>
      <aria-ui-menu-item value="paste">Paste</aria-ui-menu-item>
    </aria-ui-menu-popup>
  </aria-ui-menu-positioner>
</aria-ui-menu-root>
```

## 可动摇树的子路径导入

每个组件也会在自己的子路径下被发布,因此您只能注册您需要的部件:

```ts
import { registerListboxRootElement, registerListboxItemElement } from '@aria-ui/elements/listbox'

registerListboxRootElement()
registerListboxItemElement()
```

可用的切入点 :

-   `@aria-ui/elements` - 完全捆绑加起来 `registerElements()`
-   `@aria-ui/elements/listbox`
-   `@aria-ui/elements/menu`
-   `@aria-ui/elements/popover`
-   `@aria-ui/elements/tooltip`
-   `@aria-ui/elements/overlay` ——共享覆盖原始

## 设置道具

每个道具都可以同时作为HTML属性和JS属性提供. 复杂值(阵列、对象、, `null`)作为JSON存储:

```html
<!-- Via attributes -->
<aria-ui-listbox-root multiple values='["apple","banana"]'>
  <aria-ui-listbox-item value="apple">Apple</aria-ui-listbox-item>
  <aria-ui-listbox-item value="banana">Banana</aria-ui-listbox-item>
</aria-ui-listbox-root>
```

```ts
// Via JS properties
const listbox = document.querySelector('aria-ui-listbox-root')!
listbox.multiple = true
listbox.values = ['apple', 'banana']
```

## 样式

部件通过标准无障碍属性和少数特性暴露其状态 `data-*` 属性 :

| 属性 | 用于 | 含义 |
| --- | --- | --- |
| `aria-selected="true"` | 列表框项目 | 选择此选项 |
| `aria-expanded="true"` | 弹出/菜单/工具提示触发器 | 封面打开 |
| `aria-disabled="true"` | 任何元素 | 该元素已禁用 |
| `data-active` | 列表框项目,菜单项目 | 要点是目前突出的选项(`aria-activedescendant`(中文(简体) ) |
| `data-state="open" | "closed"` | 覆盖弹出 | 重叠打开状态, 用于过渡 |

有 Tailwind 的示例 :

```html
<aria-ui-listbox-item
  value="apple"
  class="block px-3 py-2 cursor-pointer hover:bg-blue-50 aria-selected:bg-blue-100 data-active:outline-2 data-active:outline-blue-500"
>
  Apple
</aria-ui-listbox-item>
```

## 活动

组件发送标准DOM事件,其有效载荷在 `detail` 属性 :

| 活动 | 由 | `detail` |
| --- | --- | --- |
| `valueChange` | 列表框( 单一选择) | `string` |
| `valuesChange` | 列表框(多选择) | `string[]` |
| `openChange` | 弹出、菜单、工具提示 | `boolean` |
| `select` | 菜单项目,列表框项目 | (无有效载荷) |

`valueChange` 编号 : `valuesChange` 可取消——拨打 `event.preventDefault()` 以控制模式运行列表框.

## 与框架一起使用

对于回放、Vue、Solid、Preact和Svelte,您可以使用 [`@aria-ui/cli`](https://www.npmjs.com/package/@aria-ui/cli),它处理属性/属性映射,并将 DOM 事件转换为平面框架回调.

## 许可证

麻省理工学院

## 常见问题

### @aria-ui/elements 是什么？

未命名的光- DOM- 只有Web 组件

### 如何安装 @aria-ui/elements？

在项目目录运行 npm install @aria-ui/elements，或使用 pnpm add / yarn add / bun add。

### @aria-ui/elements 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aria-ui/elements 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @aria-ui/elements 可以商用吗？

@aria-ui/elements 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aria-ui/elements 的下载量有多少？

根据 npm 官方下载统计，@aria-ui/elements 在 2026/10/07 – 2026/11/05 这 30 天内被下载 111,301 次，日均约 3,710 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aria-ui/elements 还在维护吗？

最新版本 0\.2\.0 发布于 2026/10/21（17 天前）；至今共发布 28 个版本，其中过去 12 个月发布了 28 个；首次发布于 2026/03/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

