при наведении изображения увеличить DELAY, как изображения Google - PullRequest
2 голосов
/ 25 октября 2011

На js есть код, который я написал из одного видеоурока, но нет задержки перед анимацией. Я перепробовал много методов с delay () и setTimeout (), но не получил нужного результата ...

Если бы кто-нибудь мог мне помочь? пожалуйста сделай это :) 1003 *

Я буду очень признателен за это.

Вот код с возможностью редактирования и запуска онлайн: http://jsfiddle.net/S2svG/

И вот этот код js:

$(function(){

    $.fn.popOut=function(user_opts){            
        return this.each(function(){

            var opts=$.extend({
                useId:"poppedOut",
                padding:20,
                border:0,
                speed:200
            },user_opts);

            $(this).mouseover(function(){
                // kill any instance of this already
                $("#"+opts.useId).remove();

                // make a copy of the hovered guy
                var $div=$(this).clone();

                // setup for prelim stuff
                $div.css({
                    "position":"absolute",
                    "border":opts.border,
                    "top":$(this).offset().top,
                    "left":$(this).offset().left,
                    "-moz-box-shadow":"0px 0px 12px black",
                    "-webkit-box-shadow":"0px 0px 12px black",
                    "z-index":"99"
                });

                // store all of the old props so it can be animate back
                $div.attr("id",opts.useId)
                    .attr("oldWidth",$(this).width())
                    .attr("oldHeight",$(this).height())
                    .attr("oldTop",$(this).offset().top)
                    .attr("oldLeft",$(this).offset().left)
                    .attr("oldPadding",$(this).css("padding"));

                // put this guy on the page
                $("body").prepend($div);

                // animate the div outward
                $div.animate({
                    "top":$(this).offset().top-Math.abs($(this).height()-opts.height),
                    "left":$(this).offset().left-opts.padding,
                    "height":opts.height,
                    "padding":opts.padding
                },opts.speed);

                // loop through each selector and animate it to its css object
                for(var eachSelector in opts.selectors){
                    var selectorObject=opts.selectors[eachSelector];
                    for(var jquerySelector in selectorObject){
                        var cssObject=selectorObject[jquerySelector];
                        $div.find(jquerySelector).animate(cssObject,opts.speed);
                    }
                }

                $div.mouseleave(function(){
                    $("#"+opts.useId).animate({
                        width:$(this).attr("oldWidth"),
                        height:$(this).attr("oldHeight"),
                        top:$(this).attr("oldTop"),
                        left:$(this).attr("oldLeft"),
                        padding:$(this).attr("oldPadding")
                    },0,function(){
                        $(this).remove();
                    });
                });
            });
        });
    };
        $(".productBox").popOut({
            height:300,
            border:"1px solid #333",
            selectors:[{
                ".productDescription":{
                    height:150
                }
            }]
        });                    
});     

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Это то, что вам нужно:

http://jsfiddle.net/S2svG/48/

Приветствия

2 голосов
/ 25 октября 2011

Если вы хотите задержку между событием наведения мыши и анимацией, вы можете взглянуть на hoverIntent jQuery plugin :

hoverIntent - плагин, который пытается определить пользователя намерение ... как хрустальный шар, только с движением мыши! Работает как (и был получен из) встроенного наведения jQuery. Однако вместо немедленно вызывая функцию onMouseOver, она ждет, пока пользовательская мышь замедляется достаточно, прежде чем сделать звонок.

Сказав это, вы, возможно, захотите взглянуть на jQuery.delay(). Демо здесь .

...