Skip to content

Rate 评分 ​

星级评分,支持键盘方向键调节、半星交互、悬停预览、只读展示与触屏拖拽,默认点击已选中的同一颗星可清空。

基础用法 ​

基础用法

自定义数量 ​

max

通过 max 设置星星数量。

半选 ​

半选(allow-half)

allow-half 开启后半星可交互:点击星的左半区打 i-0.5 分、右半区打 i 分;键盘 ←/→ 以 0.5 步进。

悬停预览 ​

悬停预览(oas-hover)

悬停时星星按预览值填充(不提交 value),并派发 oas-hover(detail: { value });移出组件派发 detail: { value: null } 并回落已提交值显示。allow-half 下预览同样按半区 0.5 粒度。

点击清空 ​

点击清空(allow-clear)

allow-clear="false":点已选中的星不清空

allow-clear 默认开启,再次点击当前已选中的同一颗星会清空为 0 并派发 oas-change(detail: { value: 0 });设为 "false" 后点击不清空。

尺寸 ​

尺寸(size)

size 三档:small(16px)/ medium(默认 20px)/ large(28px);可用 CSS 变量 --oas-rate-star-size 细调,非法值回落 medium 并告警。

自定义图标 ​

自定义图标(icon 属性)

通过 icon 属性传入字符或 SVG 标记即可替换星星图标:

自定义图标(icon 属性 · SVG)

自定义图标(slot) ​

自定义图标(slot)

★

通过 slot="icon" 传入任意元素,会克隆到每一颗星上。优先级:icon 属性 > slot="icon" > 默认星形。

双态图标 ​

双态图标(void-icon)

●○

未选中星的图标走 void-icon(属性或 slot="void-icon"),选中星仍走 icon 通道;半星的基座为 void 图标、覆盖层为选中图标。未配置 void 时全态同图标、仅颜色区分(默认描边星即天然双态)。

逐值符号 ​

逐值符号(icons 属性 / slot=icon-N)

12345

每颗星可配不同符号,双通道:

  • icons 属性:JSON 字符串数组(或 property el.icons = [...]),逐星覆盖;
  • slot="icon-N":声明式逐位插槽(N 从 1 起)。

逐星优先级:icons[i] > slot="icon-N" > icon 属性 > slot="icon" > 默认星形。

highlight-selected-only 切换填充规则为「仅选中那颗点亮」——逐值 emoji 分级场景必备(否则选中位之前的星会全部点亮)。

分级表情拼法 ​

分级表情拼法(icons + highlight-selected-only)

「≤ 2 分 😞、≤ 3 分 😐、其余 😄」的分级表情效果无需组件级开关,用 icons 逐值符号 + highlight-selected-only 组合即可拼出(点击上方评分切换表情)。

自定义颜色 ​

自定义颜色(color / void-color)

color 为激活星颜色、void-color 为未激活星颜色,均支持 11 预设名(映射 --oas-preset-*,暗色自动适配)与任意 CSS 色值;缺省走 --oas-color-warning-text / --oas-color-border token(也可用 --oas-rate-active / --oas-rate-void 变量批量定制)。

分段阈值色 ​

分段阈值色(colors)

colors 按分值段变色(低分红高分绿):JSON 字符串数组或 property el.colors = [...],段边界按 max 均分(3 色即三等分),悬停预览联动变色。优先级:colors > color > 默认 token。

辅助文案 ​

辅助文案(texts + show-text)

show-text 在右侧显示当前分对应文案,texts 逗号分隔(半值取 ceil 档);配置 texts 后 aria-valuetext 同步当前分文案供读屏播报。

分值展示 ​

分值展示(show-score + score-template)

show-score 在右侧显示分值,score-template 用 {value} 占位(缺省仅数值);与 show-text 同时设置时 show-score 优先。

只读 ​

只读(readonly)

readonly 独立于 disabled:不变灰、不响应点击/键盘/悬停预览,值正常展示并随表单体系提交(aria-readonly 同步);只读展示支持任意小数(如 3.7 按覆盖层宽度渲染)。disabled 则变灰并表达禁用语义。

禁用 ​

禁用

逐星提示 ​

逐星提示(tooltips)

tooltips 逗号分隔逐星文案,悬停对应星显示浮动提示(内部浅集成 oas-tooltip,视口坐标点定位);列表长度之外的星不显示提示。

触屏拖拽 ​

触屏拖拽(touch 滑选)

触屏设备上按住滑动可连续打分(allow-half 下按半区 0.5 粒度),拖拽结束后的合成点击不会误触点击清空;桌面鼠标仍走悬停预览 + 点击路径。请在触屏设备上体验。

事件 ​

变化事件

监听 oas-change(点击、清空或键盘调节,detail: { value }):

API ​

oas-rate ​

属性 ​

属性说明类型默认值
allow-clear点击已选中的同一颗星时清空为 0stringtrue
allow-half允许半星boolean—
color选中色(预设名或任意 CSS 色值)——
colors分段阈值色 JSON 数组(按 max 均分分段,如 ["#f5222d","#faad14","#52c41a"] 三段)string[] | null—
disabled禁用boolean—
highlight-selected-only仅高亮选中星(其余保持未选中色)boolean—
icon自定义星星图标(字符或 SVG 标记)——
icons逐值图标 JSON 数组(每值可配不同图标,如笑脸分级 😞😞😐😄😄;property 通道亦可赋数组)string[] | null—
max星星数量string5
readonly只读(独立于 disabled:不可交互、正常显示、仍随表单提交)boolean—
score-template分值模板串,{value} 占位(如 "{value} 分"),优先于 show-textstring{value}
show-score只读场景显示分值(配 score-template)boolean—
show-text显示当前分值对应文案(texts)boolean—
size尺寸档位 small / medium(默认 20px)/ large(28px)string—
texts各分值辅助文案(逗号分隔,配 show-text)——
tooltips逐星 tooltip 文案(逗号分隔,hover 星时显示;oas-tooltip 浅集成)——
value当前分值(受控)number0
void-color未选中色——
void-icon未选中图标名(如 heart 配 ♥/♡ 双态)——

Property(JS property;是否写回 attribute 见各行说明) ​

Property说明类型默认值
value当前值:评分分值(number)number—

事件 ​

事件说明
oas-change分值变化,detail: { value }
oas-hoverhover 星时派发,detail: { value };移出为 { value: null }

插槽 ​

名称说明
icon选中态自定义图标(替代默认星形)
icon-${i}按序号覆盖单个分值图标(宿主写 <span slot="icon-1"> …,i 为从 1 起的序号);icon 为整体覆盖
void-icon未选中态自定义图标(替代默认星形)

CSS 变量 ​

CSS 变量默认值
--oas-rate-activevar(--oas-color-warning-text)
--oas-rate-star-size20px
--oas-rate-voidvar(--oas-color-border)

图标自定义:icon 属性 > slot="icon"(克隆到每颗星)> 默认星形。

键盘:←/→(或 ↑/↓)增减,Home 归零,End 打满。

基于 MIT OR Apache-2.0 双许可发布