2012-04-12 5 views
1

내 웹 사이트에는 div가 절대 div로 표시됩니다. 내가 원하는 것은 브라우저 중간에 확대하고 위치시켜야하는 div를 클릭 할 때입니다. 내가 뭘하려 절대 div를 고정 div로 애니메이트

은 이것이다 :

그것은 작동하지만 일어난 것은 내 화면의 중앙에 애니메이션을보다 #mac가 먼저 내 화면의 왼쪽 상단 모서리에 위치하고 있다는 점이다
$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)}); 

. 이것은 고정 된 사용법 때문에 의미가 있습니다. 하지만 그 위치를 사용하지 않으면 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를 자신의 원래 크기와 위치로 줄이려면 애니메이션이 화면 하단에서 시작됩니다. 어떻게 이것을 올바르게 설정할 수 있습니까? –

+0

나는 고정 된 위치를 유지하려고 시도한 다음 이전 위치로 되돌아갑니다. 그래서 여러분이 시작한'offset'으로 돌아가십시오. 그런 다음 다시 절대 위치로 전환하십시오. 기본적으로 이전의 위치를 ​​기억하고 다시 절대로 전환하기 전에 바로 돌아가십시오. –

관련 문제