我正在尝试使用jQuery在悬停时更改div的背景图像。 这是我到目前为止所提出的,然而,它不起作用:
HTML
<div class="logo"></div>
CSS
.logo {
width: 300px;
height: 100px;
background: url('http://placehold.it/300x100/ffffff/000000.png&text=first') no-repeat center top;
}
JS
$('.logo').hover(
function(){
$(this).animate({backgroundImage: 'http://placehold.it/300x100/ffffff/000000.png&text=second'},'fast');
},
function(){
$(this).animate({backgroundImage: 'http://placehold.it/300x100/ffffff/000000.png&text=first'},'fast');
});
jsfiddle 此处:http://jsfiddle.net/26j6P/1/
我做错了什么? 如果我为背景颜色设置动画,它就可以正常工作......
答案 0 :(得分:11)
你不能对图像使用jQuery的动画 - 它只是不起作用。
使用普通的CSS,就像这样...
这是css ......
.logo {
width: 300px;
height: 100px;
background: url('http://placehold.it/300x100/ffffff/000000.png&text=first') no-repeat center top;
transition: 0.5s;
}
.logo:hover {
background-image: url('http://placehold.it/300x100/ffffff/000000.png&text=second');
}
答案 1 :(得分:6)
您无法使用.animate()
答案 2 :(得分:4)
$('.logo').hover(
function () {
$(this).animate({
opacity: 0
}, 'fast', function () {
$(this)
.css({
'background-image': 'url(http://placehold.it/300x100/ffffff/000000.png&text=second)'
})
.animate({
opacity: 1
});
});
},
function () {
$(this).animate({
opacity: 0
}, 'fast', function () {
$(this)
.css({
'background-image': 'url(http://placehold.it/300x100/ffffff/000000.png&text=first)'
})
.animate({
opacity: 1
});
});
});
答案 3 :(得分:2)
我知道我有点迟了。但如果有人需要这样做,那就有一个jquery插件。转到以下链接,向下滚动到演示,然后选择使用Backstretch作为幻灯片。它工作正常。
答案 4 :(得分:1)
尝试这样做: -
$('.logo').hover(
function() {
$(this).css("background-image",
"url(http://placehold.it/300x100/ffffff/000000.png&text=second)");
},
function() {
$(this).css("background-image",
"url(http://placehold.it/300x100/ffffff/000000.png&text=first)");
}
);
答案 5 :(得分:1)
我看到有人说你不能用jQuery
做到这一点,这是我的榜样,它有效。 $(".bannerImages img")
直接调用我的图片,因此我们可以使用$(this)
更改其属性。完成后,您可以致电$(this)
并更改其attr
,同时添加动画。
$(".bannerImages img").animate({opacity: 0}, 'slow', function() {
$(this)
.attr({'src': 'images/mainSlider/ps1.jpg'})
.animate({opacity: 1});
});