Skip to main content Skip to docs navigation

范围

使用我们的自定义范围输入来实现一致的跨浏览器样式和内置自定义。

概述

🌐 Overview

使用 .form-range 创建自定义 <input type="range"> 控件。轨道(背景)和滑块(数值)都进行了样式化,以在各个浏览器中显示一致。由于只有 Firefox 支持将轨道从滑块的左侧或右侧“填充”以视觉上表示进度,因此我们当前不支持此功能。

🌐 Create custom <input type="range"> controls with .form-range. The track (the background) and thumb (the value) are both styled to appear the same across browsers. As only Firefox supports “filling” their track from the left or right of the thumb as a means to visually indicate progress, we do not currently support it.

html
<label for="range1" class="form-label">Example range</label>
<input type="range" class="form-range" id="range1">

禁用

🌐 Disabled

在输入框上添加 disabled 布尔属性可以使其渲染灰显外观,移除指针事件,并阻止获取焦点。

🌐 Add the disabled boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.

html
<label for="disabledRange" class="form-label">Disabled range</label>
<input type="range" class="form-range" id="disabledRange" disabled>

最小值和最大值

🌐 Min and max

范围输入对 minmax 分别有隐含值——0100。你可以使用 minmax 属性为它们指定新值。

🌐 Range inputs have implicit values for min and max0 and 100, respectively. You may specify new values for those using the min and max attributes.

html
<label for="range2" class="form-label">Example range</label>
<input type="range" class="form-range" min="0" max="5" id="range2">

步骤

🌐 Steps

默认情况下,范围输入会“吸附”到整数值。要更改此设置,可以指定一个 step 值。在下面的示例中,我们通过使用 step="0.5" 将步骤数加倍。

🌐 By default, range inputs “snap” to integer values. To change this, you can specify a step value. In the example below, we double the number of steps by using step="0.5".

html
<label for="range3" class="form-label">Example range</label>
<input type="range" class="form-range" min="0" max="5" step="0.5" id="range3">

输出值

🌐 Output value

可以使用 output 元素和一些 JavaScript 来显示范围输入的值。

🌐 The value of the range input can be shown using the output element and a bit of JavaScript.

html
<label for="range4" class="form-label">Example range</label>
<input type="range" class="form-range" min="0" max="100" value="50" id="range4">
<output for="range4" id="rangeValue" aria-hidden="true"></output>

<script>
  // This is an example script, please modify as needed
  const rangeInput = document.getElementById('range4');
  const rangeOutput = document.getElementById('rangeValue');

  // Set initial value
  rangeOutput.textContent = rangeInput.value;

  rangeInput.addEventListener('input', function() {
    rangeOutput.textContent = this.value;
  });
</script>

CSS

Sass 变量

🌐 Sass variables

$form-range-track-width:          100%;
$form-range-track-height:         .5rem;
$form-range-track-cursor:         pointer;
$form-range-track-bg:             var(--#{$prefix}secondary-bg);
$form-range-track-border-radius:  1rem;
$form-range-track-box-shadow:     var(--#{$prefix}box-shadow-inset);

$form-range-thumb-width:                   1rem;
$form-range-thumb-height:                  $form-range-thumb-width;
$form-range-thumb-bg:                      $component-active-bg;
$form-range-thumb-border:                  0;
$form-range-thumb-border-radius:           1rem;
$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1);
$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow;
$form-range-thumb-focus-box-shadow-width:  $input-focus-width; // For focus box shadow issue in Edge
$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%);
$form-range-thumb-disabled-bg:             var(--#{$prefix}secondary-color);
$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;