您好我正在尝试使用jQuery动画背景图片,我尝试跟随this tutorial here,但是我的测试页面没有运气,我看到了蓝色的Facebook图标,但鼠标悬停在它上面没有动画向上显示灰色标志。请帮忙!谢谢,我是一个jQuery noob。
我的测试页: http://leongaban.com/_stack/bg_animation/
Facebook图标应向上动画,完整图片如下:
我的CSS
<style>
#facebook_icon li {
padding: 0;
width: 120px;
height: 119px;
list-style: none;
background: red;
background:url('img/fb_120x238.png') repeat 0 0;
}
</style>
HTML 的
<ul id="facebook_icon">
<li><a href="#"><div class="box"></div></a></li>
</ul>
的Javascript
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.bgpos.js"></script>
<script>
(function() {
$('#facebook_icon li')
.css( {backgroundPosition: "0 0"} )
.mouseover(function(){
$(this).stop().animate(
{backgroundPosition:"(0 -119px)"},
{duration:500})
})
.mouseout(function(){
$(this).stop().animate(
{backgroundPosition:"(0 0)"},
{duration:500})
})
})();
</script>
更新:工作CSS 3解决方案
CSS 3
#facebook_icon li {
padding: 0;
width: 120px;
height: 119px;
list-style: none;
background: red;
background:url('img/fb_120x238.png') repeat 0 0;
-moz-transition: background-position 1s;
-webkit-transition: background-position 1s;
-o-transition: background-position 1s;
transition: background-position 1s;
background-position: 0 0;
}
#facebook_icon li:hover{
background-position: 0 -119px;
}
.box {
width: 120px;
height: 119px;
}
HTML (添加空div框以点击内容)
<ul id="facebook_icon">
<li><a href="#"><div class="box"></div></a></li>
</ul>
答案 0 :(得分:5)
一个简单的解决方案应该是使用css3过渡。 你可以这样做:
在你的CSS中
#facebook_icon li{
-moz-transition: background-position 1s;
-webkit-transition: background-position 1s;
-o-transition: background-position 1s;
transition: background-position 1s;
background-position: 0 0;
}
#facebook_icon li:hover{
background-position: 0 -119px;
}
答案 1 :(得分:3)
幸运的是,这个非常简单。您在锚点上为background-position
设置了动画,但实际图像位于li上。
只需在JavaScript中更改您的选择器:
$('#facebook_icon li')
但是,我建议您更改标记(以及附带的CSS),以便a
位于li
内,而不是ul
的子项。这样你的标记就有效了。
<强>更新强>
嘿,所以我完全同意使用CSS3。这正是我实现它的方式。但是要结束这个问题:要使bgpos
插件使用jQuery 1.8.2,请将backgroundPosition
方法的前两行更改为:
if (fx.start === 0 && typeof fx.end == 'string') {
var start = $.css(fx.elem,'backgroundPosition');