서브메뉴에서 창의 크기에 따라 레이어의 위치가 주메뉴와 일치하지 않는 것을 해결하는
방법을 찾으시는 분이 많으신 것 같아 방법을 알려드리지요..
방법은 여러가지가 있지요...
주메뉴를 레이어에 넣어서 주메뉴 레이어를 화면 중앙에 오게 하고 나머지 서브메뉴를
주메뉴 레이어에의 상대적 위치에 따라 위치를 결정하는 방법..
아니면 일일히 서브레이어의 위치를 상대적으로 지정하는 방법 등등..

이중에 간단히 두번째 일일히 지정하는 방법을 좀더 간단히 하는 방법을 알려드리면...

<style>
#Layer
{
position:absolute;
left:expression!!((document.body.clientWidth-this.style.width)/2-this.getAttribute("pos"));
}
</style>

일단 스타일 시트에서 expression!!메쏘드로 자바스크립트를 이용하여 레이어의 좌측 위치를
body태그, 즉 실제문서가 표시된 부분 만큼의 너비를 이용하여 화면 중앙의 위치를 구합니다.
보이는 화면을 1/2하면 중앙이 되겠지요..

(document.body.clientWidth-this.style.width)/2
위와 같이 하는 이유는 레이어의 너비를 화면 크기에서 빼주어야 레이어 좌측이 중앙으로 부터
레이어 너비의 반만큼 왼쪽으로 더 이동되어 화면 정중앙에 오기때문이죠..

그리고 this.getAttribute("pos")는 pos라는 사용자 속성 값을 읽어 오는 겁니다.
레이어마다 따로 아이디를 부여할 필요없이 하나의 아이디로 하려고 사용하는 게지요..

그럼 실제 레이어에 적용해보지요..

아래처럼 그냥 레이어를 만드시고 id를 모두 동일하게 Layer로 줍니다.
pos는 위에서 말씀드린 사용자 속성입니다.
화면중앙에서 +값이면 왼쪽으로 이동시킬 픽셀값이고 -는 오른쪽으로 이동시킬 픽셀값이 되는 것이지요.

그럼 확인한번 해보세요..


<div id=Layer pos=60>
메뉴1
</div>

<div id=Layer pos=-30>
메뉴2
</div>

<div id=Layer pos=0>
메뉴3
</div>

<div id=Layer pos=100>
메뉴4
</div>

머 이밖에 behavior!!를 이용하는 방법(클래스 지정만으로 서브메뉴 구현가능)도 있는데..
초보자에게는 어려우니 위에 방법을 써보시고 좀더 공부하시고 behavior!!를 이용한 방법을
사용해 보시는 것도 좋을 듯 하네요..

단, 위 방법은 id가 모두 동일하므로 mouseover/out이벤트 핸들러를 적용할때는 레이어를 배열로 지정하셔서 사용하셔야 합니다.
Posted by 알 수 없는 사용자
,