Хорошей практикой является указание местоположения абсолютного элемента, который анимируется некоторым смещением. Вы запускаете относительную анимацию (- =) и внутренне jQuery вычитает 20 пикселей из текущего значения right, а поскольку right не найдено, jQuery вычитает 20 из 0, что перемещает прямоугольник в крайнее правое положение.
Это означает, что на самом деле Firefox не отображает правильный путь, IE8 и Chrome перемещают прямоугольник в крайнее правое положение.
Чтобы исправить это во всех браузерах, вам нужно указать начальное местоположение:
#box1 {
background: yellow;
position: absolute;
right: 30px;
}
Редактировать :
Если вы заранее не знаете, где находится ваш бокс1, моё решение и решение Sotiris могут не сработать.
Так что, если указание начального местоположения в CSS не работает для вас, можете сделать этот трюк:
$(function(){
$('a').click(function(){
$('#box1').
css('left', $('#box1').position().left + 'px').
animate({
left: '+=20px'
});
});
и оставьте CSS на прежнем уровне
#box1 {
background: yellow;
position: absolute;
}