2010-11-04 6 views
15

У меня есть следующий фрагмент кода, который переключает отступы при наведении курсора (смотри пример here):JQuery Animate Перетяжка к нулю

<div id="outer"><div id="inner"></div></div> 
<script> 
    $("#inner").mouseenter(function() { 
    $("#outer").animate({ 'padding' : '20px' }, "slow"); 
    }); 
    $("#inner").mouseleave(function() { 
    $("#outer").animate({ 'padding' : '0px' }, "slow"); 
    }); 
</script> 

Цель состоит в том, чтобы иметь отступы анимировать так и вне, однако в настоящее время не появляется анимация оживление. Я сделал несколько тестов, и если я изменил отложенное положение до 10 пикселей (от 0 пикселей), он запускает анимацию, но начинается с нуля и анимируется наружу. Я запускаю jQuery 1.4.3. Любой способ исправить это?

+0

Не знаете, что происходит, но не будет анимировать атрибут «margin» для работы внутреннего элемента? –

+0

@Freek, если внешний div имеет размеры, определенные .. он будет толкать внутренности слева/сверху, но он будет нарушаться наружу, так как внешний не может расширяться из-за определенных размеров. –

+0

@ Gaby point taken :) –

ответ

26

Определенно анимация ошибка в 1.4.3, потому что теперь вы можете работать вокруг анимируя индивидуальные свойства, как это:

$("#inner").mouseleave(function() { 
    $("#outer").animate({ 
    'padding-top' : 0, 
    'padding-right' : 0, 
    'padding-bottom' : 0, 
    'padding-left' : 0, 
    }, "slow"); 
}); 

You can test it out here.

+0

Спасибо, Ник! Всегда оценивайте свои очень точные ответы. Кроме того, классный инструмент для демонстрации кода! –

+0

ошибка существует в том смысле, что она не хранит отступы после анимации каким-то образом .. даже если вы полностью удаляете мышь, возникает проблема при повторном входе в div. Анимация начинается с нуля. –

+0

@Gaby -I думаю, что это связано с тем, что позиция мыши смещается в нее, не зная, почему она вообще удаляется, хотя ... Я собираюсь немного поспать или выпить кофе, а затем посмотреть, где это Случается, что –

5

Похож на ошибку в 1.4.3 (переписан css часть). 1.4.2 работает отлично:

http://www.jsfiddle.net/YjC6y/44/

Я изучил ее и обновлять этот пост.

+0

Спасибо Энди. Я ценю подтверждение того, что это ошибка! –

0

Я просто понял, JQuery не реагирует очень хорошо дефис «-» в анимации, но вы получите тот же результат, получив поездку из дефис и заглавные буквы первого письма. Итак, у вас будет что-то вроде этого:

$("#inner").mouseleave(function() { 
     $("#outer").animate({ 
    paddingTop : 0, 
     paddingRight : 0, 
     paddingBottom : 0, 
     paddingLeft : 0, 
     borderLeftWidth: 0, 
     borderTopWidth: 0, 
     borderRightWidth: 0, 
     borderBottomWidth: 0, 

}, slow);