Skip to content

Foundation 滑块

Foundation 滑块(Slider)用于在一定范围内选择数值。本章将介绍滑块的各种用法。

基本滑块

html
<div class="slider" data-slider data-initial-start="50">
    <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
    <span class="slider-fill" data-slider-fill></span>
</div>

带输入框的滑块

html
<div class="grid-x grid-padding-x">
    <div class="cell small-10">
        <div class="slider" data-slider data-initial-start="50">
            <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="sliderOutput"></span>
            <span class="slider-fill" data-slider-fill></span>
        </div>
    </div>
    <div class="cell small-2">
        <input type="number" id="sliderOutput">
    </div>
</div>

双滑块(范围选择)

html
<div class="slider" data-slider data-initial-start="25" data-initial-end="75">
    <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
    <span class="slider-fill" data-slider-fill></span>
    <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
</div>

垂直滑块

html
<div class="slider vertical" data-slider data-initial-start="50" data-vertical="true" style="height: 200px;">
    <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
    <span class="slider-fill" data-slider-fill></span>
</div>

配置选项

html
<div class="slider" data-slider
     data-initial-start="50"
     data-start="0"
     data-end="100"
     data-step="5"
     data-decimal="0">
    <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
    <span class="slider-fill" data-slider-fill></span>
</div>
选项说明默认值
data-initial-start初始值0
data-start最小值0
data-end最大值100
data-step步进值1
data-decimal小数位数2
data-vertical垂直方向false

自定义样式

html
<style>
    .slider.success .slider-fill { background: #3adb76; }
    .slider.success .slider-handle { background: #3adb76; }

    .slider.warning .slider-fill { background: #ffae00; }
    .slider.warning .slider-handle { background: #ffae00; }

    .slider.alert .slider-fill { background: #cc4b37; }
    .slider.alert .slider-handle { background: #cc4b37; }
</style>

JavaScript API

javascript
// 获取滑块值
var slider = new Foundation.Slider($('#mySlider'));
var value = $('#mySlider').attr('data-slider');

// 监听变化
$('#mySlider').on('moved.zf.slider', function() {
    console.log('滑块值:', $(this).attr('data-slider'));
});

完整示例

html
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Foundation 滑块示例</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
    <style>
        .demo-section { margin-bottom: 40px; padding: 20px; background: #f8f8f8; }
        .demo-section h3 { margin-bottom: 20px; }
        .slider.success .slider-fill, .slider.success .slider-handle { background: #3adb76; }
        .slider.warning .slider-fill, .slider.warning .slider-handle { background: #ffae00; }
        .slider.alert .slider-fill, .slider.alert .slider-handle { background: #cc4b37; }
    </style>
</head>
<body>
    <div class="grid-container">
        <h1>Foundation 滑块展示</h1>

        <div class="demo-section">
            <h3>基本滑块</h3>
            <div class="slider" data-slider data-initial-start="50">
                <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
                <span class="slider-fill" data-slider-fill></span>
            </div>
        </div>

        <div class="demo-section">
            <h3>带输入框的滑块</h3>
            <div class="grid-x grid-padding-x">
                <div class="cell small-10">
                    <div class="slider" data-slider data-initial-start="50">
                        <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="output1"></span>
                        <span class="slider-fill" data-slider-fill></span>
                    </div>
                </div>
                <div class="cell small-2">
                    <input type="number" id="output1">
                </div>
            </div>
        </div>

        <div class="demo-section">
            <h3>范围滑块</h3>
            <div class="grid-x grid-padding-x">
                <div class="cell small-2">
                    <input type="number" id="rangeStart">
                </div>
                <div class="cell small-8">
                    <div class="slider" data-slider data-initial-start="20" data-initial-end="80">
                        <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="rangeStart"></span>
                        <span class="slider-fill" data-slider-fill></span>
                        <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="rangeEnd"></span>
                    </div>
                </div>
                <div class="cell small-2">
                    <input type="number" id="rangeEnd">
                </div>
            </div>
        </div>

        <div class="demo-section">
            <h3>自定义颜色</h3>
            <label>Success</label>
            <div class="slider success" data-slider data-initial-start="70">
                <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
                <span class="slider-fill" data-slider-fill></span>
            </div>
            <label>Warning</label>
            <div class="slider warning" data-slider data-initial-start="50">
                <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
                <span class="slider-fill" data-slider-fill></span>
            </div>
            <label>Alert</label>
            <div class="slider alert" data-slider data-initial-start="30">
                <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span>
                <span class="slider-fill" data-slider-fill></span>
            </div>
        </div>

        <div class="demo-section">
            <h3>步进滑块</h3>
            <p>步进值:10</p>
            <div class="grid-x grid-padding-x">
                <div class="cell small-10">
                    <div class="slider" data-slider data-initial-start="50" data-step="10">
                        <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="stepOutput"></span>
                        <span class="slider-fill" data-slider-fill></span>
                    </div>
                </div>
                <div class="cell small-2">
                    <input type="number" id="stepOutput">
                </div>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
    <script>$(document).foundation();</script>
</body>
</html>

总结

本章我们学习了基本滑块、范围滑块、垂直滑块和自定义样式。

下一章,我们将学习 Foundation 提示框