首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当元素可见时运行动画-自定义javascript

当元素可见时运行动画-自定义javascript
EN

Stack Overflow用户
提问于 2018-03-15 21:10:27
回答 1查看 75关注 0票数 0

我正在创建一个几乎没有动画的网站,下面是从左到右显示图像的javascript和css的片段

代码语言:javascript
复制
    var i = 0;
    var interval = setInterval(function () {
    $('.mask').width(i + "%");
    i++;
    if (i == 101) {
    clearInterval(interval);
    }
    }, 20);
代码语言:javascript
复制
    .mask {
      background:white;
      max-width: 640px;
      z-index:1;
      height: 426px;
      position: relative;
      overflow: hidden;
    }
    
    .img {
      width: 100%;
      position: absolute;
      top: 0;
      left: 0;
    }
代码语言:javascript
复制
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="mask">
    <div class="img">
    <img src="https://beebom-redkapmedia.netdna-ssl.com/wp-content/uploads/2016/01/Reverse-Image-Search-Engines-Apps-And-Its-Uses-2016.jpg" />
    </div>
    </div>

然后是从右到左显示图像的javascript。

代码语言:javascript
复制
var i = 0;
    var interval = setInterval(function () {
    $('.mask3').css({ left: -i + "%" });
    i++;
    if (i === 0) {
    clearInterval(interval);
    }
    }, 20);
代码语言:javascript
复制
    .wrapper {
      width: 640px;
      height: 430px;
      position: relative;
    }
    
    .mask3 {
      position: absolute;
      top: 0;
      left: 0;
      background:white;
      width: 100%;
      height: 100%;
      z-index:1;
    }
    
    .img {
      width: 100%;
      position: absolute;
      top: 0;
      left: 0;
      z-index:0;
    }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="wrapper">
      <div class="mask3">
      </div>
      <div class="img">
        <img src="https://beebom-redkapmedia.netdna-ssl.com/wp-content/uploads/2016/01/Reverse-Image-Search-Engines-Apps-And-Its-Uses-2016.jpg" />
      </div>
    </div>

现在,我尝试仅在显示div时加载此动画,或者用户向下滚动到特定的div,然后动画将回滚。

我尝试了几个脚本,但所有的脚本都被引导使用if else语句,尽管我无法挑选任何有效的脚本,但有人能在这一点上帮助我吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-15 23:45:31

这是一个非常粗略的答案,但如果你愿意,你可以这样做。你仍然需要在你的动画函数上做更多的工作,以使它隐藏,然后根据你想要的方式显示。

代码语言:javascript
复制
var elem = $('.img'); //use a better identifier like an id.
var counter = 0
elem.hide();

function myAnimation() {
    elem.show();
    var i = 0;
    var interval = setInterval(function () {
    $('.mask').width(i + "%");
    i++;
    if (i == 101) {
    clearInterval(interval);
    }
    }, 20);
    counter++;
}

$(window).scroll(function(){
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    if ((elemBottom <= docViewBottom) && (elemTop >= docViewTop) && counter < 1) {
        myAnimation();
    }
});

计数器基本上是为它设置一次动画,因为您将在每次滚动时触发此动画。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49300350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档