Skip to content

滑块 Slider

滑块是用于在指定范围内选择数值的输入控件。

基础用法

基础滑块

html
<div class="glass-slider">
  <input type="range" class="slider-input" min="0" max="100" value="50">
</div>

预览效果:

CSS 类名

基础类名

  • .glass-slider - 基础滑块样式
  • .glass-slider-range - 双向滑块容器

修饰类名

状态修饰符

  • :disabled - 禁用状态
  • :readonly - 只读状态

JavaScript 增强

滑块事件处理

javascript
// 监听滑块值变化
document.querySelectorAll('.glass-slider input').forEach(slider => {
  slider.addEventListener('input', function() {
    console.log('滑块值:', this.value);
  });
  
  slider.addEventListener('change', function() {
    console.log('最终值:', this.value);
  });
});

显示当前值

javascript
function addValueDisplay(slider) {
  const display = document.createElement('span');
  display.className = 'slider-value';
  display.textContent = slider.value;
  
  slider.parentNode.appendChild(display);
  
  slider.addEventListener('input', function() {
    display.textContent = this.value;
  });
}

// 使用示例
document.querySelectorAll('.glass-slider input').forEach(addValueDisplay);

应用场景

音量控制

html
<div class="volume-control">
  <label class="form-label">音量控制</label>
  <div class="glass-slider">
    <span class="slider-icon">🔇</span>
    <input type="range" min="0" max="100" value="50" id="volume-slider">
    <span class="slider-icon">🔊</span>
  </div>
  <span class="slider-value">50</span>
</div>

价格范围

html
<div class="price-range">
  <label class="form-label">价格范围</label>
  <div class="glass-slider-range">
    <input type="range" min="0" max="1000" value="200" class="range-min">
    <input type="range" min="0" max="1000" value="800" class="range-max">
  </div>
  <div class="range-display">
    <span class="range-min-value">¥200</span>
    <span>-</span>
    <span class="range-max-value">¥800</span>
  </div>
</div>

设置调节

html
<div class="settings-sliders">
  <div class="setting-item">
    <label class="form-label">亮度</label>
    <div class="glass-slider">
      <input type="range" min="10" max="100" value="80">
    </div>
  </div>
  
  <div class="setting-item">
    <label class="form-label">对比度</label>
    <div class="glass-slider">
      <input type="range" min="0" max="100" value="50">
    </div>
  </div>
  
  <div class="setting-item">
    <label class="form-label">饱和度</label>
    <div class="glass-slider">
      <input type="range" min="0" max="200" value="100">
    </div>
  </div>
</div>

Released under the MIT License.