如何在循环中使用JavaScript动画效果?

时间:2015-03-16 12:45:24

标签: javascript wow.js

我尝试使用wow.js添加JavaScript动画效果,因此我对其进行了初始化:

<head>
  <link rel="stylesheet" href="css/animate.css">
  <script src="js/wow.min.js"></script>
  <script>
     new WOW().init();
  </script>
</head>

我将班级效果(wow slideInRight)放在我的div

<div class="row row-sm padder-lg ">

        <?php
        foreach ($top->tracks->track as $key => $value) 
        {
            if($key >= $this->config->item("items_top"))
                return false;
            $image = $value->image[3]->text;
                if($image == '')
            $image = $value->image[2]->text;
                if($image == '')
            $image = base_url()."assets/images/no-cover.png";
        ?>       
        <div class="col-xs-6 col-sm-4 col-md-3 col-lg-2">
            <div class="item wow slideInRight">
                <img style="background:url('<?php echo $image; ?>')"/>  
            </div>
        </div>
        <?php
        }
        ?>
</div> 

问题在于,此JavaScript不会显示每个项目的效果,而是同时显示所有项目的效果。在循环中使用此JavaScript的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

WOW.js初始化应放在<body>而不是<head>的末尾,如下所示:

   <script src="js/wow.min.js"></script>
   <script>
     new WOW().init();
   </script>
  </body>
</html>

除此之外,请记住wowjs在滚动时到达对象时开始动画,所有项目在同一行 ,所以在同一高度,动画是正确的一起开始。

如果你需要它们按顺序开始(即最左边的那个,然后是其他的,直到你到达右边的最后一个)为你的div添加一个合适的data-wow-delay="<number_of_seconds>s",并且增加number_of_seconds

修改

你可以按照以下方式做点什么:

<div class="row row-sm padder-lg ">

        <?php

        $delay=0;

        foreach ($top->tracks->track as $key => $value) 
        {
            if($key >= $this->config->item("items_top"))
                return false;
            $image = $value->image[3]->text;
                if($image == '')
            $image = $value->image[2]->text;
                if($image == '')
            $image = base_url()."assets/images/no-cover.png";
        ?>       
        <div class="col-xs-6 col-sm-4 col-md-3 col-lg-2">
            <div class="item wow slideInRight" data-wow-delay="<?php echo $delay; ?>s">
                <img style="background:url('<?php echo $image; ?>')"/>  
            </div>
        </div>
        <?php
            $delay+=0.5;
        }
        ?>
</div> 

这是你需要的吗?