웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
레이어의 상대위치 지정 방법(position:absolute에서...)
2002.03.29 02:36
서브메뉴에서 창의 크기에 따라 레이어의 위치가 주메뉴와 일치하지 않는 것을 해결하는
방법을 찾으시는 분이 많으신 것 같아 방법을 알려드리지요..
방법은 여러가지가 있지요...
주메뉴를 레이어에 넣어서 주메뉴 레이어를 화면 중앙에 오게 하고 나머지 서브메뉴를
주메뉴 레이어에의 상대적 위치에 따라 위치를 결정하는 방법..
아니면 일일히 서브레이어의 위치를 상대적으로 지정하는 방법 등등..
이중에 간단히 두번째 일일히 지정하는 방법을 좀더 간단히 하는 방법을 알려드리면...
<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이벤트 핸들러를 적용할때는 레이어를 배열로 지정하셔서 사용하셔야 합니다.
이외 DHTML관련 궁금한 사항은 http://neom.new21.net 에 오셔서 남겨주시면 답변드리도록 하지요..
방법을 찾으시는 분이 많으신 것 같아 방법을 알려드리지요..
방법은 여러가지가 있지요...
주메뉴를 레이어에 넣어서 주메뉴 레이어를 화면 중앙에 오게 하고 나머지 서브메뉴를
주메뉴 레이어에의 상대적 위치에 따라 위치를 결정하는 방법..
아니면 일일히 서브레이어의 위치를 상대적으로 지정하는 방법 등등..
이중에 간단히 두번째 일일히 지정하는 방법을 좀더 간단히 하는 방법을 알려드리면...
<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이벤트 핸들러를 적용할때는 레이어를 배열로 지정하셔서 사용하셔야 합니다.
이외 DHTML관련 궁금한 사항은 http://neom.new21.net 에 오셔서 남겨주시면 답변드리도록 하지요..
댓글 2
제목 | 글쓴이 | 날짜 |
---|---|---|
배너 링크를 바로 클립보드로 카피하기 [5] | Legend | 2002.04.01 |
[v]최근 업데이트 시간을 자동으로 나타내 보자! [3] | :+:zZion:+: | 2002.03.30 |
[v]하나더! 해상도별 다른 페이지 보여주기 | :+:zZion:+: | 2002.03.30 |
[v]운영 체제별 다른 페이지 보여주기 -_-;v [3] | ┏ⓩZion┛ | 2002.03.30 |
레이어의 상대위치 지정 방법(position:absolute에서...) [2] | Legend | 2002.03.29 |
다이나믹 HTML 스크립트 - 간편 공지사항에.... [1] | ▩윤미 | 2002.03.28 |
[자바스트립트]bidoo님의 레벨메타식 체크박스 보강 | 탐그루 | 2002.03.20 |
:: DB 필요없는 일정관리 .. 거창하게.. -.- [2] | 고전지기 | 2002.03.15 |
자동 팝업창띠우기 소스 [4] | 이슈™ | 2002.03.13 |
홈페이지 패스워드 걸기 소스 [7] | 이슈™ | 2002.03.13 |
스크롤바색상바꿔주는프로그램(수정) [3] | 이슈™ | 2002.03.13 |
▩마우스 주위에 3D 처럼 뱅뱅도는 글자 [6] | ▩윤미 | 2002.03.11 |
테두리가 스믈스믈한 -_-;; | 란즈 | 2002.03.02 |
빠르게 이동하는 텍스트 | 란즈 | 2002.03.02 |
깜박거리는 문자 [1] | 란즈 | 2002.03.02 |
강한 인상을주는 (?) 환영메세지 -_-; [5] | 란즈 | 2002.03.02 |
텍스트 지진(?)효과 내기 | 란즈 | 2002.03.02 |
페이지 사용안하고 팝업띄우기 [4] | 란즈 | 2002.03.02 |
▩물결 처럼 흐르는 것같은 이미지 슬라이드 쇼 [2] | ▩윤미 | 2002.02.28 |
▩마우스를 대면 하이퍼텍스트 스크롤하는 법 (링크할수있음) | ▩윤미 | 2002.02.28 |
예전에,, 지금 nzeo v.3 과 거의 동일한 (?)형식의 홈피를 만든적이 있었는데요,,
그때,, 레이어 문제 때문에,, 왼쪽으로 홈피를 바짝 붙였었다는 ;;
이렇게 하면 중앙 배열이 가능하겠군요 ;;