在悬停链接时更改div的背景位置,并通过mouseout,jQuery保持位置

时间:2013-05-01 19:58:13

标签: jquery background jquery-animate sprite mouseout

我经常搜索以获得帮助以回答以下问题:

当我将鼠标悬停在链接上时,我想用jquery更改div的图像 - 背景位置。 在mouseOut上,应保留当前位置。

使用案例:http://jsfiddle.net/c9wN9/1/

我有一个带有四种不同“状态”的精灵图像。 在页面加载时,显示图像状态1(位置0 0)。

通过将鼠标悬停在四个不同的链接(位置0 0/0 0 100/0 200/0 300)上,背景位置应相应更改并保持其在mouseOut上的当前位置。

此外,图像更改可以通过fadeIn / fadeOut进行动画处理,并且可以在链接上显示当前活动位置。 (<a>上的活跃课程?)

HTML结构:

<div id="background"></div>
<a id="link1" href="#">State 1</a>
<a id="link2"href="#">State 2</a>
<a id="link3"href="#">State 3</a>
<a id="link4"href="#">State 4</a>

CSS

#background {
height: 100px;
width: 100px;
}

的jQuery

?

我用基础知识制作了一个jsfiddle并希望你的jQuery支持: http://jsfiddle.net/c9wN9/1/

非常感谢您提前,

坦率

1 个答案:

答案 0 :(得分:0)

我没有包含动画,但这应该完全符合您的要求。

<style>
#background {
height: 100px;
width: 100px;
background-img:('foo.png')}
#background.hover1{background-position:0px 0px} 
#background.hover2{background-position:0px 100px}
#background.hover3{background-position:0px 200px}
#background.hover4{background-position:0px 300px}
</style>

<div id="background"></div>
<a id="hover1" class="trigger" href="#">State 1</a>
<a id="hover2" class="trigger" href="#">State 2</a>
<a id="hover3" class="trigger" href="#">State 3</a>
<a id="hover4" class="trigger" href="#">State 4</a>

<script>
$(".trigger").hover(function (){
// get hover class
var hoverClass = $(this).attr('id');
// remove active class from any trigger link
$(".trigger").removeClass('active');
// add active class to current trigger link
$(this).addClass('active');
// add hover class to the background div to shift the background position
$("#background").removeClass().addClass(hoverClass);
});
</script>