我在页面上有内容,在中途我有使用CSS动画的技能栏。我想只在看到技能栏时播放动画。
我尝试使用js,当我使用一个技能栏时它起作用了。如下所示:jsfiddle.net/pCgYe/6/
但是当我添加更多酒吧时,它完全停止了工作。就像这里:jsfiddle.net/pCgYe/7/
我知道我必须在js代码中添加一些东西,但我不确定要添加什么。
function isElementInViewport(){
var scrollTop = $(window).scrollTop();
var viewportHeight = $(window).height();
$('.skiller #skill:not(.html5)').each(function(){
var top = $(this).offset().top;
console.log(top);
console.log(scrollTop + viewportHeight);
if(scrollTop + viewportHeight >= top ){
$(this).find('.expand').addClass('html5');
console.log(true);
}else{
console.log(false);
}
});
}
$(window).scroll(isElementInViewport);
如果有人能指导我朝正确的方向发展。
提前谢谢你们!
答案 0 :(得分:0)
代码的问题在于html,所有技能都已经有动画,因此新动画将无法运行。我通过删除
尝试了这个-moz-animation: css3 2s ease-out; -webkit-animation: css3 2s ease-out;
来自css3类,然后css3技能有一个动画。所以你可以做的是在元素中添加一个名为animate的类,然后在你的css中从技能类中删除动画,并为每个技能类添加以下内容:
.jquery.animate {-moz-animation: jquery 2s ease-out; -webkit-animation: jquery 2s ease-out; }
那应该有用
答案 1 :(得分:0)
这是因为在您的5 bar版本中,您已经直接添加了css类,而不是通过javascript编程。这意味着动画会立即发生。
<div class="skiller col">
<ul id="skill">
<li><span class="expand html5"><small>%70</small></span><em>HTML
5</em></li>
<li><span class="expand css3"><small>%90</small></span><em>CSS
3</em></li>
<li><span class=
"expand jquery"><small>%50</small></span><em>jQuery</em></li>
<li><span class=
"expand photoshop"><small>%10</small></span><em>Photoshop</em></li>
<li><span class=
"expand dreamweaver"><small>%100</small></span><em>Dreamweaver</em></li>
</ul>
</div>
在每行展开后删除类,并将其添加到您的javascript中,就像在单栏版本中一样。 我在工作,所以不能做一个正确的版本,但尝试以下javascript:
function isElementInViewport(){
var scrollTop = $(window).scrollTop();
var viewportHeight = $(window).height();
$('.skiller #skill:not(.html5)').each(function(){
var top = $(this).offset().top;
console.log(top);
console.log(scrollTop + viewportHeight);
if(scrollTop + viewportHeight >= top ){
$(this).find('.expand').addClass('html5');
$(this).find('.expand1').addClass('css3');
$(this).find('.expand2').addClass('jquery');
$(this).find('.expand3').addClass('photoshop');
$(this).find('.expand4').addClass('dreamweaver');
console.log(true);
}else{
console.log(false);
}
});
}
$(窗口).scroll(isElementInViewport);
删除你在HTML中添加的类后,你还需要更改HTML扩展类,如下所示:(注意:这是一个糟糕的实现,但请将其作为基础来大大改进)。 / p>
<div class="skiller col">
<ul id="skill">
<li><span class="expand"><small>%70</small></span><em>HTML
5</em></li>
<li><span class="expand expand1"><small>%90</small></span><em>CSS
3</em></li>
<li><span class=
"expand expand2"><small>%50</small></span><em>jQuery</em></li>
<li><span class=
"expand expand3"><small>%10</small></span><em>Photoshop</em></li>
<li><span class=
"expand expand4"><small>%100</small></span><em>Dreamweaver</em></li>
</ul>
</div>
看看这个小提琴是否正常运作:http://jsfiddle.net/pCgYe/9/
重要提示:理想情况下,您希望使代码可重用且可扩展。我的“修复”是一种非常强硬的方式,并没有采用最佳实践。如果你再也不打算再使用它,只需要尽快完成它,这是可以的,但我建议你考虑以更加干燥的方式重建它。