我想在jquery动画中更改背景图像位置。但我的代码不起作用。任何人都可以帮我缩短它。
以下是我的代码
的CSS
#pnav a{
background:url(http://www.us-bingo.com/images/Tickets/Solid-Color-Tyvek-Wrist-Tickets-lg.gif) 0 0 no-repeat;
display:block;
width:20px;
height:42px;
}
Jquery的
$('#pnav a')
.hover(function () {
$(this).stop().animate({
'background-position' : '(0px -42px)'
}, 150);
}, function () {
$(this).stop().animate({
'background-position' : '(0 0)'
}, 150);
});
HTML
<div id="pnav">
<a href="#">123</a>
</div>
提前谢谢。
答案 0 :(得分:4)
我认为jQuery动画无法为background-position
制作动画,但您可以使用CSS过渡
#pnav a{
background:url(http://www.us-bingo.com/images/Tickets/Solid-Color-Tyvek-Wrist-Tickets-lg.gif) 0 0 no-repeat;
display:block;
width:20px;
height:42px;
-webkit-transition: background-position 150ms ease-in-out;
-moz-transition: background-position 150ms ease-in-out;
-ms-transition: background-position 150ms ease-in-out;
-o-transition: background-position 150ms ease-in-out;
transition: background-position 150ms ease-in-out;
}
#pnav a:hover {
background-position:0px -42px;
}
这是一个小提琴:http://jsfiddle.net/pavloschris/eg5zC/7/
以及transition
浏览器的可配合性:http://caniuse.com/#search=transition
答案 1 :(得分:2)
对于背景图像位置动画,我们需要使用“jquery.backgroundpos.js”你可以从这里下载http://keith-wood.name/js/jquery.backgroundpos.js
$(document).ready(function(){
$('#pnav a')
.hover(function () {
$(this).stop().animate({backgroundPosition: '0px ' + '35px'}, 500);
}, function () {
$(this).stop().animate({backgroundPosition: '0px ' + '0px'}, 500);
});
});
这是更新后的jsFiddle file
答案 2 :(得分:0)
用此替换你的行,
background:url('http://www.us-bingo.com/images/Tickets/Solid-Color-Tyvek-Wrist-Tickets-lg.gif') no-repeat ;
在CSS
中为URL添加引号答案 3 :(得分:0)
在animate函数中,background-position不能像那样工作。请改用
$('#pnav a')
.hover(function () {
$(this).animate({
'background-position-x': '10%',
'background-position-y': '20%'
}, 550);
}, function () {
$(this).animate({
'background-position-x': '0%',
'background-position-y': '0%'
}, 550);
});
:ref
然而,你想要的是通过CSS3.0实现的'xpy'指出,但它不会在IE上运行
下面是工作样本:
<html>
<head>
<script language="javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script>
<script>
$(document).ready(function(){
$('#pnav a')
.hover(function () {
$(this).animate({
'background-position-x': '10%',
'background-position-y': '20%'
}, 550);
}, function () {
$(this).animate({
'background-position-x': '0%',
'background-position-y': '0%'
}, 550);
});
});
</script>
<style>
#pnav a{
background:url(http://www.standard-icons.com/stock-icons/standard-road/scooter-icon.gif) 0 0 no-repeat;
display:block;
width:20px;
height:42px;
}
</style>
</head>
<body>
<div id="pnav">
<a href="#">123</a>
</div>
</body>
</html>