【问题标题】:How can I make an animation after Pageload页面加载后如何制作动画
【发布时间】:2013-04-23 00:37:08
【问题描述】:

我想创建一个页面,在向下滚动页面时可以看到动画,而不是一次。

我已经创建了一个包含四个 css3 动画的页面。它现在在页面加载时立即制作动画。我希望它在向下滚动页面时显示动画。

我听说jquery可以做到,但我不能在那里实现。

我已经尝试过 jquery 但无法正常工作。请帮忙。

这是我的错误代码:

<script type="text/javascript">

    $(window).load(function() {
        $("#one").delay(100).fadeInUp();
        $("#two").delay(300).fadeInDown();
        $("#three").delay(600).fadeInRight();
        $("#four").delay(700).fadeInLeft();
        $("body").delay(500).queue(function(next){$(this).addClass("fadeInUp");next();})
    })

div #one、#two、#three 和#four 各有一个动画。一下子就动起来了。但我希望它在向下滚动时加载。就像:http://knockknockfactory.com。代码可在 Github 上找到。请看上面。

【问题讨论】:

  • 在 Stack Overflow,代码通常比网站链接更受欢迎,因为一旦链接发生变化,问题将不再具有历史价值。请访问 here 获取有关将代码格式化为您的问题的帮助。使用jsFiddle 来帮助说明您的观点也可能会有所帮助。

标签: jquery css animation


【解决方案1】:

对已编辑问题的回答

这和以前的原理一样,只是在你向下滚动多个px而不是特定的div时触发

动画

API 文档

Example

$(document).scroll(function () {

    var y = $(this).scrollTop();

    if (y > (200)) {
        $(".magic").fadeIn('fast').addClass("fadeInDown").removeClass("fadeOutUp");
    }
    if ((y < (200)) && $('.magic').hasClass('fadeInDown')) {
        $(".magic").addClass("fadeOutUp").removeClass("fadeInDown").fadeOut('slow');
    }
    //magic2  
    if (y > (300)) {
        $(".magic2").fadeIn('fast').addClass("fadeInRight").removeClass("fadeOutRight");
    }
    if ((y < (300)) && $('.magic2').hasClass('fadeInRight')) {
        $(".magic2").addClass("fadeOutRight").removeClass("fadeInRight").fadeOut('slow');
    }
    //magic3
    if (y > (400)) {
        $(".magic3").fadeIn('fast').addClass("fadeInLeft").removeClass("fadeOutLeft");
    }
    if ((y < (400)) && $('.magic3').hasClass('fadeInLeft')) {
        $(".magic3").addClass("fadeOutLeft").removeClass("fadeInLeft").fadeOut('slow');
    }
    //magic4
    if (y > (500)) {
        $(".magic4").fadeIn('fast').addClass("fadeInUp").removeClass("fadeOutDown");
    }
    if ((y < (500)) && $('.magic4').hasClass('fadeInUp')) {
        $(".magic4").addClass("fadeOutDown").removeClass("fadeInUp").fadeOut('slow');
    }
});

原始问题的答案

页面加载动画完全可以仅在 css 中实现。 只需设置一个关键帧动画并将其附加到一个元素上,当该元素加载时,动画就会完成它的工作。

用户向下滚动到某个元素触发的动画需要一点 jquery。

$(document).scroll(function () {
var y = $(this).scrollTop();
var x = $("#myDiv").position();

if (y > (x.top - 28)) {
    $(".magic").addClass(
        "bounceInRight");
}
else {
    $(".magic").removeClass(
        "bounceInRight");
}
});

Example

【讨论】:

  • 是的,上面的 javascript 可以工作,但我已经用 css3 关键帧动画弄清楚了。真的很酷。谢谢!
  • 嗨,你能不能给我看一个演示页面,其中一个元素来自左侧,另一个来自右侧,另一个来自底部。不是一次,应该一个一个来。
  • @EbrahimKhalil 查看Animate.css,查看动画,然后您可以使用animation-delay: 进行计时
  • 再次感谢 animate.css ,虽然我知道 css3 关键帧动画。无论如何,我不能在那里使用 jquery。你能在 github 上帮助我吗?我上传了这些只是为了让你获得帮助。这是链接:github.com/Ebrahim6/loading-animation。只需下载并进行加载转换。我已经添加了 css 文件。它现在立即加载。但是希望它在向下滚动页面时加载。任何帮助都是非常可观的。
  • @EbrahimKhalil 如果您有具体问题,请在 SO 上提问,我可能会提供帮助。如果您需要一个完整的构建,您可能需要雇用某人。
【解决方案2】:

从技术上讲,您只需要 javascript,执行以下操作:

window.onload = function(){
//put animation code here
}

不过,动画本身可能需要 jQuery。据我所知,CSS3 在加载时不会做任何事情。

【讨论】:

  • 实际上,您甚至不需要 window.onload。您可以简单地将 JS/jQuery 放在页面底部,就在结束 body 标记之前,它会在页面加载时立即开始。
  • 很酷的提示,我不知道。不过感觉window.onload会更稳定。
  • 它可能感觉更稳定,但直接执行代码与从事件处理程序回调函数执行相同代码一样稳定(如果不是更稳定)。
  • 嗨 HartleySan 和 Wilson,我不能在那里使用 jquery。你能在 github 上帮助我吗?我上传了这些只是为了让你获得帮助。这是链接:github.com/Ebrahim6/loading-animation。只需下载并进行加载转换。我已经添加了 css 文件。它现在立即加载。但是希望它在向下滚动页面时加载。任何帮助都是非常可观的
猜你喜欢
  • 2018-05-16
  • 2019-12-23
  • 1970-01-01
  • 2015-02-25
  • 2016-10-21
  • 1970-01-01
  • 2013-05-06
  • 2014-08-02
  • 2011-08-11
相关资源
最近更新 更多