jQuery to change (with fade animation) background image of div on hover

前端 未结 6 1441
南笙
南笙 2021-01-12 16:40

I am trying to change the background image of a div on hover with jQuery. This is what I came up so far, however, it\'s not working:

html

         


        
相关标签:
6条回答
  • 2021-01-12 17:10

    Try doing this:-

    $('.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)"); 
        }
    );
    
    0 讨论(0)
  • 2021-01-12 17:12

    I saw someone saying you can't do it with jQuery, well here is my example and it works. $(".bannerImages img") is calling my image directly, so we can change its attribute using $(this). Once that's done you can call $(this) and change its attr, and also add an animation.

    $(".bannerImages img").animate({opacity: 0}, 'slow', function() {
         $(this)
             .attr({'src': 'images/mainSlider/ps1.jpg'})
             .animate({opacity: 1});
    });
    
    0 讨论(0)
  • 2021-01-12 17:19

    You cannot animate non numerical properties with .animate()

    0 讨论(0)
  • 2021-01-12 17:19

    DEMO

    $('.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
                    });
            });
    });
    
    0 讨论(0)
  • 2021-01-12 17:24

    You can't use jQuery's animate with images - it just doesn't work.

    Use plain css, like this...

    http://jsfiddle.net/26j6P/9/

    Here's the 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');
    }
    
    0 讨论(0)
  • 2021-01-12 17:31

    I know I'm a bit late. But if there's anyone who needs to do this, there's a jquery plugin for that. Go to the following link, scroll down to demos, and choose Using Backstretch as a slideshow. It works fine.

    http://srobbin.com/jquery-plugins/backstretch/

    0 讨论(0)
提交回复
热议问题