ICEN UI 滑块
Docs ⌘K
Core · 稳定

滑块

数值滑块:单值与双值区间两种形态,样式自由、键盘可达。

Preview
表单 slider
音量40
价格区间20 – 80
html
<div class="demo-col" style="width:100%;max-width:420px">  <div class="icen-slider-row"><span>音量</span><span id="demo-slider-val">40</span></div>  <div class="icen-slider">    <div class="icen-slider-track"></div>    <div class="icen-slider-fill" style="width:40%"></div>    <div class="icen-slider-thumb" style="left:calc(40% - 8px)"></div>    <input class="icen-slider-native" id="demo-slider" type="range" min="0" max="100" value="40" aria-label="音量" />  </div></div><div class="demo-col" style="width:100%;max-width:420px;margin-top:16px">  <div class="icen-slider-row"><span>价格区间</span><span id="demo-dual-val">20 – 80</span></div>  <div class="icen-slider icen-slider--dual" id="demo-dual">    <div class="icen-slider-track"></div>    <div class="icen-slider-range" style="left:20%; right:20%"></div>    <div class="icen-slider-thumb slider-thumb--lo" style="left:calc(20% - 8px)"></div>    <div class="icen-slider-thumb slider-thumb--hi" style="left:calc(80% - 8px)"></div>    <input class="icen-slider-native" type="range" data-icen-thumb="lo" min="0" max="100" value="20" aria-label="最小值" />    <input class="icen-slider-native" type="range" data-icen-thumb="hi" min="0" max="100" value="80" aria-label="最大值" />  </div></div>

特性

读数回显由使用方监听原生 input 事件驱动(见演示接线)。

接口

初始化
initSlider()(kit 一行入口可直接命名导入)
导出
initSlider
事件
icen:slider-changeicen:slider-input detail 契约见 IcenEventMap
类型
dist/behaviors/slider.d.mts(随 npm 包发布,含全部 JSDoc 约束)

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

js
import { initSlider } from '@icen.ai/ui/kit/slider';initSlider();

也可以用脚手架直接打印引入行:

bash
bunx --bun @icen.ai/ui add slider

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/slider.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

js
import { initSlider } from '@icen.ai/ui/behaviors/slider';initSlider();