jQuery 将 css left 设置为值 1,完成后设置为值 2?

标签 jquery css queue

我只是好奇如何实现以下目标:

我创建了一个简单的 slider ,自动向左滑动。初始加载时,幻灯片的排列方式如下:第一张 0% left、第二张 100% left、第三张 200% left。它们会自动向左滑动。

因此,在第一次移动之后,左边的值读取为第一个 -100%、第二个 0%、第三个 100%。下一步,在 3 张幻灯片示例中,left -100% 的元素将变为 left 200%

现在我实现了向左移动/向右移动按钮。虽然向左移动按钮很容易使用,但我在使用向右移动按钮时遇到了很多问题。

问题:

如果没有包含 css left -100% 的幻灯片,则需要将最右边的幻灯片放到该位置。在示例中,具有 css left 200% 的幻灯片需要设置为 -100% 并且位置更改后,应设置为 0%.

问题:

Css left -100% 未设置(幻灯片不会从left 200%移动到-100%再到0%,但直接从 200%0%)。

我使用了 queue,但这不管用,我现在一无所知。

在函数中,我首先运行 each() 来识别具有最高左值的元素。然后我再次运行 each() 让它们移动。一切正常,除了上面的问题。

我怎样才能实现我的目标?

function moveSlidesReverse() {
var slides = jQuery('#main').children('.dfmn-section-slider');
var pos2 = 0;

slides.each(function() {
    pos = jQuery(this)[0].style.left;
    pos = parseInt(pos.substring(0,pos.indexOf('%')));
    if (pos == -100) {
        outerSlide = '';
        return false;
    } else if (pos > pos2) {
        pos2 = pos;
        outerSlide = jQuery(this).attr('id');
    } 
});
slides.each(function() {
    pos = jQuery(this)[0].style.left;
    pos = parseInt(pos.substring(0,pos.indexOf('%')));
    if (outerSlide != jQuery(this).attr('id')) {
        jQuery(this).removeClass('dfmn-section-slider-static')
                .addClass('dfmn-section-slider-animate')
                .css('left', (pos+100) + '%');
    } else  {
        jQuery(this).removeClass('dfmn-section-slider-animate')
                .addClass('dfmn-section-slider-static')
                .css('left', '-100%')
                .queue(function() {
                jQuery(this).removeClass('dfmn-section-slider-static')
                        .addClass('dfmn-section-slider-animate')
                        .css('left', '0%')
                        .dequeue;
                });     
    }
});
}

最佳答案

我会使用“setInterval”函数让 slider 自行移动。 然后我会停止画廊的“MouseEnter”事件的间隔(使用“clearInterval”),最后我会使用“one”函数来激活箭头。

请注意,使用“one”时,您应该在动画的最后绑定(bind)事件;像这样:

$('.NAME').one('click',function(){ "MOVE-YOUR-GALLERY";})

function MOVE-YOUR-GALLERY(){
        $(.gallery).animate({....}, 5000, function(){
        $('.NAME').one('click',function(){ "MOVE-YOUR-GALLERY";})
    } )
}

关于jQuery 将 css left 设置为值 1,完成后设置为值 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37658635/

相关文章:

html - <ul> 元素不会调整高度以适应子 <li> 元素

html - 内容 div 不插入页脚 div

html - 如何仅向某些div添加不透明度

Python 线程和队列示例

java - Java 处理链中的作业排队

使用堆栈和队列的 C++ 计算器

jquery - 如何加快 $.offset() 速度?

jquery - 使用ajax刷新表格内容后重绘数据表?

javascript - 将 jwPlayer 变量传递给 jquery

jquery - 它就像这样 : Click an image, 显示图像 - 使用 jQuery