Skip to content
通用组件

下拉选择Select

原生 <select> 换肤:与裸下拉同一枚 ▾,列表与键盘是浏览器自己的。

Vue
实验import { AkSelect } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

原生 <select> 换肤(与裸 <select> 同一枚 ▾,--ak-select-arrow):弹出的列表、键盘、手机上的滚轮选择器、读屏都是浏览器自己的,所以只画关着时的那个框。选项照 Naive UI 的 n-select 用 options 数组给,v-model 是选中项的 value(数字也行)。

基本 ​

placeholder 是一个选不到的空选项:没选(v-model 为 null / undefined)时显示它。

分组 · 禁用项 ​

{ type: "group", label, children } 渲染成 <optgroup>;选项写 disabled: true 选不到。

尺寸 · 状态 ​

高 30 / 36 / 44,与输入框同一刻度。禁用、status="error"(红边 + aria-invalid)、success(绿边);放在表单字段里时跟字段的 validation-status。

什么时候不用它 ​

  • 选项 ≤ 5 个、又想一眼看全:用单选;立即生效的视图切换用单选按钮组。
  • 要搜索 / 多选 / 自定义选项外观:原生 <select> 做不到,需要下拉菜单类组件(.ak-dropdown)另做。

Vue API ​

属性类型默认说明
options必填(SelectOption | SelectGroupOption)[]—选项(同 Naive 的 options):{ label, value, disabled };{ type: "group", label, children } 是一组(<optgroup>)
placeholderstring—没选时显示的提示(一个选不到的空选项);不写则默认选中第一项的样子
size"md""sm""lg""md"尺寸:sm 30 · md 36 · lg 44(px 高),与输入框同一刻度
status"success""error"—校验状态:error 红边(aria-invalid)· success 绿边;不写时跟 AkField 的 validation-status
disabledbooleanfalse禁用
labelstring—可访问名(aria-label):不在 AkField 里、旁边也没有 <label> 时必填
modelValueSelectValue | null—选中项的 value;没选是 null / undefined
事件参数说明
update:modelValue[value: SelectValue | null | undefined]

CSS 实现 ​

<select class="ak-select">;尺寸 .ak-select--sm / --lg;状态 :disabled [aria-invalid="true"] / :user-invalid .is-valid。

块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有