我尝试使用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的正确方法是什么?
答案 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>
这是你需要的吗?