2013-09-16 2 views
1

Я нашел здесь полезную часть кода. Я очень надеюсь, что кто-то может мне помочь.jQuery анимированный заголовок при зависании

Вот код:

$(function(){ 
    $('#header_nav').data('size','big'); 
}); 

$(window).scroll(function(){ 
    if($(document).scrollTop() > 0) 
    { 
     if($('#header_nav').data('size') == 'big') 
     { 
      $('#header_nav').data('size','small'); 
      $('#header_nav').stop().animate({ 
       height:'40px' 
      },600); 
     } 
    } 
    else 
    { 
     if($('#header_nav').data('size') == 'small') 
     { 
      $('#header_nav').data('size','big'); 
      $('#header_nav').stop().animate({ 
       height:'100px' 
      },600); 
     } 
    } 
}); 

http://jsfiddle.net/JJ8Jc/76/


Вопрос: Как сделать то же самое, только при наведении курсора мыши (не прокручивать)?


Большое спасибо.

ответ

0

Это намного проще, чем вы думаете.

(1) $('#header_nav').data('size','small'); 

В отношении (1), точный фрагмент кода, который вы вставили на самом деле просто добавление данных-атрибут, который я предполагаю, что вам не нужно, как вы нашли код в Интернете.

(2) $('#header_nav').stop().animate({ 

В отношении (2), .stop() как раз останавливаю одушевленный резко, не позволяя ему закончить

Ключом является целевым событием мыши, входящей в DIV показан ниже:

$("#header_nav").mouseenter(function(){ 

, а затем еще раз, когда он уходит, чтобы дать вам эффект показано ниже курсора, находящегося:

$("#header_nav").mouseleave(function(){ 

Я раздел код, чтобы сделать его как можно более простым для вас читать (DEMO ниже)

DEMO

Это говорит само за себя, на MouseEnter/MouseLeave «одушевленный» (постепенно уменьшить/увеличить) высота контейнера.

+0

спасибо. Это полезно, но выявила еще одну проблему. Если вы быстро перемещаетесь по области, она все равно реагирует (это раздражает). Это лучше, чем результат будет выглядеть примерно так: http://coffeesurfing.illy.com/ Как это сделать? Извините за мой английский. – mrWilson

+0

На coffeesurfing.illy вы увидите, если вы прокрутите прошлое быстро, оно немного движется. Я думаю, что они используют .stop(), как это http://jsfiddle.net/JJ8Jc/318/ – Aaron

+0

Почти близко. Спасибо. Я не уверен, правильно ли вы меня поняли сейчас, но можно ли установить время остановки (время, когда область не отвечает, если вы наводите на нее курсор)? В настоящее время он все еще отвечает. – mrWilson

Смежные вопросы