滑块

透明原生 range 覆盖层驱动填充与滑块;双滑块带选中段与 lo ≤ hi − step 钳制。

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

安装

bun add @icen.ai/ui

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

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

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

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 项目无此问题。

用法

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