javascript - 如何使用音量 slider 控制轨道?

标签 javascript slider continuum

我正在使用这个音量 slider :

// HTML/CSS/JS Volume slider inspired by the Vimeo player

$(document).ready(function () {
    var $input = $('#sliderInput'),
        steps = $input.attr('data-steps');
    defValue = $input.attr('value'),
    $slider = $("<div class='vslider'><div class='vslider_bar'></div><ul class='vslider_sticks'></div>").appendTo($input.parent());
    $input.hide();

    for (var i = 0; i < steps; i++) {
        var $stick = $('<li><div class="vslider_stick"a></div></li>').appendTo($slider.find('.vslider_sticks'));
        $stick.on('mouseenter', function () {
            $(this).addClass('active');
        }).on('mouseleave', function () {
            $(this).removeClass('active');
        });
    }

    var startDrag = function (event) {
        renderUI(getPercent(event));
        $(document.body).on('mousemove', onDrag);
        $(document.body).on('mouseup', stopDrag);
    },
    stopDrag = function (event) {
        $(document.body).off('mouseup', stopDrag);
        $(document.body).off('mousemove', onDrag);
    },
    onDrag = function (event) {
        renderUI(getPercent(event));
    };

    renderUI = function (percent) {
        var index = Math.round(percent * steps);
        index = index < steps ? index : steps;

        $('.vslider_sticks > li').find('div').css('opacity', 0);

        for (var i = 0; i < index; i++) {
            $('.vslider_sticks > li:eq(' + i + ')').find('div').css('opacity', 1);
        }
    };
    renderUI(defValue);

    getPercent = function (event) {
        var percent = (event.pageX - $slider.offset().left) / $('.vslider_sticks').width();
        percent = percent >= 0 ? percent : 0;
        percent = percent <= 1 ? percent : 1;
        return percent;
    };

    $slider.on('mousedown', startDrag);
});
body {
    background: #eee;
}
.container {
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -18px;
    margin-left: -23px;
}
.vslider {
    position: relative;
    display: inline-block;
    height: 36px;
}
.vslider * {
    -webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: moz-none;
-ms-user-select: none;
user-select: none;
}
.vslider_sticks {
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    display: block;
}
.vslider_sticks > li {
    position: relative;
    text-indent: -99999px;
    width: 5px;
    margin-right: 3px;
    height: 90%;
    top: 10%;
    float: left;
    display: inline-block;
    background: rgba(0, 0, 0, 0.1);
  
    -webkit-transition: height 60ms ease-out, top 60ms ease-out;
    -moz-transition: height 60ms ease-out, top 60ms ease-out;
    -ms-transition: height 60ms ease-out, top 60ms ease-out;
    -o-transition: height 60ms ease-out, top 60ms ease-out;
    transition: height 60ms ease-out, top 60ms ease-out;
}
.vslider_sticks > li:last-child {
    margin-right: 0;
}
.vslider_sticks > li.active {
    height: 100%;
    top: 0;
}
.vslider_stick {
    width: 100%;
    height: 100%;
    position: relative;
    top: 0;
    left: 0;
    background: #d41700;
    opacity: 1;
  
    -webkit-transition: opacity 50ms ease-out;
    -moz-transition: opacity 50ms ease-out;
    -o-transition: opacity 50ms ease-out;
    -ms-transition: opacity 50ms ease-out;
    transition: opacity 50ms ease-out;
}
<div class="container">
    <input type="range" value="0.6" data-steps="8" id="sliderInput" />
</div>

如何将其链接到轨道?我不确定在哪里放置变量(或者需要进行哪些其他编辑)

最佳答案

没有 html 属性可以将其链接到声音。您必须以编程方式提取拖动时的值并将其应用到您的声音中。

声音还取决于实现。默认的 HTML5 音频元素有一个 volume 属性:

var audio = new Audio("AUDIO_SOURCE");
audio.volume = 0.2;

关于javascript - 如何使用音量 slider 控制轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42287897/

相关文章:

javascript - 光滑 slider 问题 : displaying thumbnails in vertical columns

continuum - 在 splunk for Continuum 中监控哪些日志很重要

java - Continuum 作为 Jenkins 的替代品?

javascript - 客户端JS : Return concatenation of async requests

javascript - 如何在 Node 中正确提交 XML post 请求?

javascript - 背景图片不覆盖div

javascript - 如果 slider 从头开始,Coda-Slider 不应滑回所有元素

javascript - 错误 : [mobx-state-tree] Failed to resolve reference XXX to type 'User'

javascript - Snap.svg:如何使用Set.bind(...)?