javascript - html 元素的自定义 jQuery slider 不起作用

标签 javascript jquery slider

我正在尝试添加一个 slider 来为我的主屏幕上的某些段落添加动画效果。 我不想使用任何插件。 我想使用 jQuery 自己创建它。但有一个问题,似乎 jQuery 中的条件不起作用。

请检查以下代码并尝试修复它。

<div id="slider-viewport">
  <div class="slider">
    <p>1 Cloud based e-commerce solution for your downloadable products</p>
    <p>2 Cloud based e-commerce solution for your downloadable products</p>
    <p>3 Cloud based e-commerce solution for your downloadable products</p>
    <p>4 Cloud based e-commerce solution for your downloadable products</p>
  </div>
</div>

CSS

.slider p {
    font-size: 25px;
    color: #fff;
    height: 100px;
    margin: 0;
}

#slider-viewport {
    width: 100%;
    height: 100px;
    overflow: hidden;
    background-color: black;
}

.slider {
    width: 100%;
    height: auto;
}

jQuery

$(document).ready(function() {

    $('.slider p').first().clone().appendTo('#slider-viewport .slider')

    function slider() {

        var $slider = $('#slider-viewport .slider');
        var currentMargin = $slider.css('margin-top');
        var paraHeight = $('.slider p').height();
        var setMargin = parseInt(currentMargin) - paraHeight;
        var resetMargin = -300;

        if (currentMargin < resetMargin) {
            $slider.css('margin-top', 0);
        };

        $slider.animate({
            marginTop: setMargin
        }, {
            duration: 600,
            easing: "easeOutQuint"
            }
        );
    };

    setInterval(slider, 3000);

});

最佳答案

您可以通过仅对第一个元素进行动画处理,然后在动画处理后重置并将其放回列表末尾来稍微简化一下事情,您也可以通过使函数避免 setInterval()递归

function slider() {
    var $slider = $('#slider-viewport .slider');
    var $first = $slider.find('p:first');

    $first.delay(3000).animate({'margin-top': $first.height() * -1}, 600, "easeOutQuint", function () {
        $(this).css('margin-top', 0).appendTo($slider);
        slider();
    }); 
};

$(document).ready(function () {
    slider(); 
});

<强> Demo fiddle

关于javascript - html 元素的自定义 jQuery slider 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200730/

相关文章:

javascript - Chart.js 不显示在 Bootstrap 选项卡面板中

javascript - jQuery Moble 如果可能的话返回一页,否则转到这里

javascript - 使用 jquery 数据表时如何通过选择框更改自定义 dom

c# - 从 jquery 下载具有现有路径的文件的最简单方法?

jquery - 复制一个 JQuery slider

jquery - 在 IE 中显示整个 DIV(jQuery slider )

javascript - 防止多个upvote Angularjs

javascript - 为什么要使用这个防御分号?

Javascript 方法链

javascript - jQuery UI 错误 - 未捕获的语法错误 : Unexpected Identifier