jQuery:HTML5音频控件仅在播放时浮动

时间:2018-12-12 08:06:55

标签: javascript jquery html5 audio

我正在将以下脚本与音频控件class =“ box follow-scroll” 配合使用,以使其在滚动页面时浮动。但我想知道是否有可能仅在音频处于 播放 暂停 模式下时才使其浮动?如果停止,则它没有开始,它将停留在原处。

$(window).load(function(){

    (function($) {
        var element = $('.follow-scroll'),
            originalY = element.offset().top;

        var topMargin = 20;
        element.css('position', 'relative');

        $(window).on('scroll', function(event) {
            var scrollTop = $(window).scrollTop();

            element.stop(false, false).animate({
                top: scrollTop < originalY ? 0 : scrollTop - originalY + topMargin
            }, 300);
        });
    })(jQuery);

});

html:

<audio controls class="box follow-scroll">
<source src="http://techslides.com/demos/samples/sample.ogg" type="audio/ogg">
<source src="http://techslides.com/demos/samples/sample.mp3" type="audio/mpeg">
</audio>

1 个答案:

答案 0 :(得分:0)

在音频元素中添加两个事件监听器。一种在播放音频时开始浮动,另一种在暂停时重置音频元素。在以下示例中,stopFloating()通过将var scrollTop = 0;设置为零来重置音频元素。您当然可以进一步调整此功能。

类似的东西:

var element = $('.follow-scroll'), originalY = element.offset().top;

var topMargin = 20;
element.css('position', 'relative');

element[0].addEventListener("playing", function() {
    startFloating();
});

element[0].addEventListener("pause", function() {
    stopFloating();
});


function startFloating () {
    $(window).on('scroll', function(event) {

        var scrollTop = $(window).scrollTop();

        element.stop(false, false).animate({
                top: scrollTop < originalY ? 0 : scrollTop - originalY + topMargin
        }, 300);    
    });
}

// Reset your element
function stopFloating () {
    $(window).on('scroll', function(event) {

        var scrollTop = 0;

        element.stop(false, false).animate({
                top: scrollTop < originalY ? 0 : scrollTop - originalY + topMargin
        }, 300);    
    });
}