2012-04-12 2 views
1

На моем сайте у меня есть div с абсолютной позицией в родительском div. То, что я хочу, - это когда я нажимаю div, который он должен увеличить и разместить в середине моего браузера.animate absolute div to fixed div

Что я попытался это:

$j("#mac").click(function(){ 
$j('#mac').css({ 
     position: 'fixed' 
    }); 

$j('#mac').animate({ 
    width: 923, 
    height: 498, 
    left: ($j(window).innerWidth() - 923)/2, 
    top: ($j(window).innerHeight() - 498)/2 
    }, 1000)}); 

Он работал, но то, что произошло то, что #mac первый расположен в левом верхнем углу моего экрана и чем анимировать в центре моего экрана. Это имеет смысл из-за использования фиксированной позиции. Но когда я не использую эту позицию, позиция div не будет находиться в центре.

Таким образом, я не хочу, чтобы я размещался в левом верхнем углу экрана, но div должен анимироваться из его исходного положения в центр экрана.

Кто-нибудь знает, как это сделать?

Заранее благодарен!

+0

Если вы хотите использовать абсолютное положение, вы должны добавить положение прокрутки, чтобы довести его до центра окна просмотра. –

+0

@SvenBieder благодарит за ваш ответ. У вас есть небольшой пример, как это сделать? –

+0

вы делаете это так же, как вы сделали это с фиксированной позицией. но чтобы вы добавили дополнительно window.pageXOffset, и сверху вы добавляете window.pageYOffset –

ответ

2

Если вы изменили положение CSS на фиксированное, в то же время, найдите текущую верхнюю и левую позиции DIV и установите их также. Это должно начать анимацию в правильном месте.

var offset = $j('#mac').offset(); 

$j('#mac').css({ 
    position: 'fixed', 
    top: offset.top, 
    left: offset.left 
}); 
+0

Спасибо, эта работа как шарм! –

+0

John, Еще один вопрос. Когда я пытаюсь уменьшить div до его размера orignal и положение анимации начинается в нижней части экрана. Как я могу установить это правильно? –

+0

Я постараюсь сохранить фиксированное положение, а затем вернуться туда, где он был раньше. Итак, вернемся к «смещению», с которого вы начали. Затем просто переключите его на абсолютное позиционирование. В основном просто помните, где он был раньше, и возвращайтесь к нему, прежде чем снова перейти к абсолюту. –