在悬停时添加淡入和淡出过渡到背景图像

时间:2011-07-30 12:52:51

标签: jquery css background-image fade

我在页面的侧边栏中有一个简单的导航系统,您可以看到here

正如您可以看到,当您将鼠标悬停在侧边栏中的某个链接上时,背景图像会发生变化,因为我已在CSS中设置了不同的背景URL以悬停。我正在寻找一种添加过渡效果的简单方法,以便悬停背景图像淡入淡出。我尝试了几种jQuery方法但没有成功。我想知道是否有一种方法可以使用jQuery或其他方法向后台URL图像添加淡入淡出过渡,或者是否必须使用其他方法来获得过渡效果。

谢谢,

尼克

3 个答案:

答案 0 :(得分:3)

如果没有一些澄清或一些示例代码,很难说你正在尝试做什么,但是你在寻找something like this吗?

$("#someElement").hover(function() {
    $(this).stop().fadeOut("1000", function() {
       $(this).attr("src", "anotherImage.png").fadeIn(1000);
    }); 
}, function() {
    $(this).stop().fadeOut("1000", function() {
       $(this).attr("src", "firstImage.png").fadeIn(1000);
    }); 
});

在此示例中,#someElement引用img元素。 {HID效果时,src属性会在悬停时更改。

修改 - 重新阅读您的问题,我认为您要更改background-image CSS属性,而不是src元素的img 。如果是这种情况,请查看this example。所有真正改变的是用attr替换jQuery css函数。

答案 1 :(得分:3)

使用以下代码:

<div id="someElement" style="background:url('2.jpg');width:100px;height:100px;">
</div>
     $(document).ready(function(){ 
        $("#someElement").hover(function() {
            $(this).stop().fadeOut("1000", function() {
                $(this).css("background", "url('1.jpg')").fadeIn(1000);
            });
        }, function() {
            $(this).stop().fadeOut("1000", function() {
                $(this).css("background", "url('2.jpg')").fadeIn(1000);
            });
        });
    });

答案 2 :(得分:0)

<强> HTML

这是将在背景中包含图像的HTML元素:

<div class="image"></div>

<强> CSS

我们定义了两个CSS类。包含image1.jpg的元素和包含image2.jpg的第二个类的默认值:

.image {
    width: 1000px; /* Image width */
    height: 500px; /* Image height */
    background: url('../images/image1.jpg') no-repeat; /* First image */
    -moz-background-size: 100% 100%;
    -webkit-background-size: 100% 100%;
    -o-background-size: 100% 100%;;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src = "../images/image1.jpg", sizingMethod = 'scale');
    background-size: 100% 100%;
    background-position: center;
}
.image.image-2 {
    background: url('../images/image2.jpg') no-repeat;  /* Second image */
    -moz-background-size: 100% 100%;
    -webkit-background-size: 100% 100%;
    -o-background-size: 100% 100%;;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src = "../images/image2.jpg", sizingMethod = 'scale');
    background-size: 100% 100%;
    background-position: center;
}

<强>的JavaScript

JavaScript使用回调/承诺来确保每个转换以正确的顺序发生:

var elem = $('.image'); // Define the element
elem.hover(toggleImage); // When hovering over the element, run the toggleImage function

function toggleImage() {
    // Fade out 0.5 secs, toggle image class, fade in 0.5 secs
    elem.fadeOut(500, function(){
        elem.toggleClass('image-2').promise().done(function(){
            elem.fadeIn(500);
        });
    })
}