【问题标题】:jQuery UI Slide - Move content during animationjQuery UI Slide - 在动画期间移动内容
【发布时间】:2014-12-03 06:54:32
【问题描述】:

我正在构建一个依赖 jQuery 效果的网站,但 jQuery 幻灯片效果存在问题。 我目前正在通过toggle 函数使用它,但这将在稍后阶段改变。

事实上,当某个动作被执行时,我正在阻止一个元素。当您使用slide 函数时,这些元素下方的内容会在动画完成时移动以占用由效果创建的空闲空间。

问题是内容只有在动画完成后才会移动。当动画仍在运行时,有什么方法可以移动内容。换句话说,我想将内容与动画一起移动,但我不想在应该随之移动的元素上调用slide 函数。

我创建了一个 JSFiddle 来演示这个问题:http://jsfiddle.net/6Lg9vL8m/6/

编辑:问题更新和小提琴

这是问题的更新,请参阅我原来的更新小提琴。 当您在 jQuery UI 中执行幻灯片效果时,请参阅我的 fiddle 中的底部示例,该框向上移动,并位于不可见屏幕后面的某个位置(很难解释)。

使用 animate 函数,请参阅我的小提琴中的顶部示例,该区域缩小了,这是我想要避免的事情。我想实现像'Slide'那样的效果,但是框下的内容必须随着动画立即向上移动,而不是在动画完成之后。

编辑:在插件中重新编写了正确答案。

感谢我在这里收到的答案,我找到了正确的代码,稍作修改,并从中创建了一个插件,我将把它放在这里。

该插件称为“窗帘”,可以描述为将请求的元素作为窗帘升起,从而将其移开。

这里是源代码:

(function($) {
    $.fn.curtain = function(options, callback) {
        var settings = $.extend( {}, $.fn.curtain.defaults, options);
        var tabContentsHeight = $(this).height();

        $(this).animate({height:0}, settings.duration);
        $(this).children().animate({'margin-top':'-' + tabContentsHeight + 'px'}, settings.duration, function() {
            $(this).css({"margin-top":0});

            if ($.isFunction(callback)) {
                callback(this);
            }
        });

        return this; // Allows chaining.
    };

    $.fn.curtain.defaults = {
        duration: 250
    };
}(jQuery));

插件可以这样调用:

element.curtain({ duration: 250 }, function() {
    // Callback function goes here.
});

如果有人有意见或者解决这个问题的更好方法,请在cmets中分享。

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    您可以使用这样的 animate 函数来做到这一点:

    $('#square').on('mousedown', function(e) {
        $(this).animate({height:-200},2500);
    });
    

    Demo

    更新了代码以创建类似动画的“窗帘升起”:-

    $('#square').on('mousedown', function(e) {
        $(this).animate({height:-200},2500);
        $(this).children().animate({"margin-top":"-400px"},2500, function() {
            $(this).css({"margin-top":0})
        });
    });
    

    CSS:

    `#square{
         overflow:hidden;
     }`
    

    Demo 2

    【讨论】:

    • 很抱歉,但经过进一步调查。这不是我真正需要的。因为底部消失,直到它到达顶部。我想反对搬出去。所以抓住底部并向上移动,直到它到达顶部。和幻灯片效果一样。
    • 知道了。你想要从下到上的动画。我将通过更改来更新我的代码。
    • 你能检查我更新的问题和小提琴,这应该更清楚。
    • 几乎,但您仍然可以看到 jQuery UI 幻灯片方法和您的实现之间的差异。我不想粗鲁,你所做的很好,但我尝试重新制作一个用于 Web 的 Windows 应用程序,并且动画必须完全相同。您是否知道如何更新代码以使其与 jQuery UI 幻灯片功能完全相同?提前致谢。
    • 嘿,看看这个fiddle。通过更改“margin-top”中的减少值来获得类似上滑的效果。为了合并函数行之间的延迟,我提高了边距顶部变化的速度。否则我认为通过 CSS3 过渡,我们可以得到类似 jQuery UI Slide 的东西。
    【解决方案2】:

    This是你想要的效果吗?

    $('#square').on('click', function(e) {
         $(this).animate({height :0},2500 );
    });
    

    【讨论】:

    • 很抱歉,但经过进一步调查。这不是我真正需要的。因为底部消失,直到它到达顶部。我想反对搬出去。所以抓住底部并向上移动,直到它到达顶部。和幻灯片效果一样。
    • 抱歉,仍然不确定您到底想要什么。
    • @Complexity 您能否编辑您的问题以消除这种困惑,我不确定您所说的“我想反对搬出”是什么意思。谢谢
    • 你能检查我更新的问题和小提琴,这应该更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2011-07-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多