【问题标题】:Keep current page visible while loading another page with ajax and css transition使用 ajax 和 css 转换加载另一个页面时保持当前页面可见
【发布时间】:2014-12-07 07:44:32
【问题描述】:

我正在使用 ajax 加载下一页,它工作正常。 (带有aws ajaxify插件的wordpress)

pastebin of ajax js

我现在想要的只是保持当前页面可见,直到下一页加载并占据视口。

这里是演示站点 m 的链接 http://goo.gl/R8sGB5

所以当我点击任何链接时,我的 ajax 插件会执行以下操作

准备变量

contentSelector = '#' + aws_data['container_id'],
        $content = $(contentSelector),

然后它添加一个淡出过渡

$body.ajaxify();

    // Hook into State Changes
    $(window).bind('statechange',function(){
        // Prepare Variables
        var
        State       = History.getState(),
        url         = State.url,
        relativeUrl = url.replace(rootUrl,'');

        // Set Loading
        $body.addClass('loading');

        // Start Fade Out
        // Animating to opacity to 0 still keeps the element's height intact
        // Which prevents that annoying pop bang issue when loading in new content

        if ( '' != aws_data['transition'] ) {
        $content.animate({opacity:0.6},900);

所以在这个缓慢的淡出之后,插件使用 ajax 请求新页面

// Ajax Request the Traditional Page

页面加载良好。现在在这里我想让当前页面在背景中仍然可见,并且新页面带有 slideLeft 过渡。

为此我准备好了slideLeft css 类。

我准备申请$content.addClass("slideLeft");,但是当我这样做时,当前页面首先消失,然后在黑屏上进入下一页..

那么我怎样才能做到这一点,当前页面保持可见直到下一页滑到最左边的位置?

我想要的非常接近的原型是https://www.dropbox.com/guide/admin

谢谢

编辑1

根据@vinrav 的建议,我修改了代码,但是当下一页加载时,当前页面消失了

这是我修改后的代码的 pastebin

http://pastebin.com/gVFjayDK

line no 122 to 125( fadeout after ajax request )
line no 140 ( adding transition class) 

我猜我的顺序有问题,寻求帮助。

非常感谢

【问题讨论】:

    标签: ajax wordpress css ajaxify


    【解决方案1】:

    您需要更改点击的处理顺序。

    1. 准备变量。
    2. 让 ajax 请求页面。
    3. 然后淡出当前页面。淡出时间需要足够大以满足通过 ajaxing 获取请求页面的时间。这取决于您的服务器速度、客户端互联网速度和其他因素。
    4. 当您获得请求的页面时,开始向左滑动过渡,如果当前页面淡出时间足够大,您将不会出现黑屏。

    我的建议等到通过ajax得到请求的页面后,才开始淡出当前页面。您的关闭原型(https://www.dropbox.com/guide/admin)就是这样做的。 Dropbox 站点等待来自 ajax 的响应(您可以在页面顶部看到一个栏,它告诉我们等待...... ajax 正在路上......)

    编辑:

    1. 准备变量。
    2. 让 ajax 请求页面。
    3. 获取请求的页面。
    4. 开始淡出。
    5. 开始向左滑动

    【讨论】:

    • 感谢您,我会尝试发布结果。此外,是否可以将淡出时间作为一个变量,其值为 = ajax 请求时间 + 更多延迟,或者只是猜测 3 秒是一个好的开始?任何想法:-)
    • 只有得到结果后才能得到准确的ajax request time。这不是你需要的。坚持保管箱计划
    • 是的!没关系..但不知何故,我不能按照你的建议把它弄好。我已经用 EDIT1 更新了我的问题,如果你可以在 pastebin 有一个 luk .. 并建议我我做错了什么。那会很棒:-)
    • 由于旅途的原因,我有一段时间没有机会使用我的电脑了...对此感到抱歉...在浏览完您的代码后,我认为您正在替换 @987654323 @内容本身。实际上,您需要添加一个新的“div 标签”作为兄弟姐妹并使用 ajax 结果填充它,然后在您的旧 div tag 淡出时将其向左滑动..
    猜你喜欢
    • 2017-09-04
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2020-06-09
    • 2014-04-25
    相关资源
    最近更新 更多