웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
IFRAME을 드래그해서 크롬리스처럼 사용하기
2002.10.21 22:28
IFRAME을 마치 윈도우처럼 타이틀바로 드래그/드롭 할수 있는 팁입니다.
원리는 아주 간단합니다
일단 IFRAME이 있고
IFRAME 위에 타이틀바 레이어가 딱 붙어있죠. (마치 한몸뚱아리처럼)
물론 타이틀바레이어는 '부모'윈도가 갖고 있는놈이구요.
대략적인 흐름으로 설명 하자면 이렇습니다
[타이틀바에 마우스DOWN(버튼이눌려진상태)]
↓
[드래그 '가능'상태]
↓
[마우스MOVE]
↓
[마우스DOWN이벤트에서의 좌표와 마우스MOVE 후의 좌표의 차이만큼 IFRAME 의 좌표를 변경]
설명이 좀 부족해 보이지만
소스와 주석을 보시면 쉽게 알수 있을겁니다 ( 사실 대단한것도 아님 --;)
더불어 타이틀바 오른쪽에 '닫기'버튼의 기능까지 첨가하면 멋진 '윈도흉내내기'가 되겠죠.
예제: http://myhome.hanafos.com/~muldae76/iframe.html
응용: http://myhome.hanafos.com/~muldae76/index.html
<HTML>
<HEAD>
<TITLE>IFRAME 드래그하기</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var ifdocDrag = false; // 드래그 불/가 를 저장할 논리변수
function docDrag(){ // 마우스버튼이 눌려진 상태에서 드래그를 준비하는 함수
ifdocDrag = true; // 드래그 '가능'
originXtitle = titlebar.style.pixelLeft; //원래의 타이틀바 X 좌표 (스타일에서의 'left')
originYtitle = titlebar.style.pixelTop; //원래의 타이틀바 T 좌표 (스타일에서의 'top')
originXdoc = document.all['docFrame'].style.pixelLeft; // 원래의 IFRAME X좌표 (스타일에서의 'left')
originYdoc = document.all['docFrame'+ '].style.pixelTop; // 원래의 IFRAME Y좌표 (스타일에서의 'top')
tempX = self.event.clientX; // 이벤트(mousedown)이 발생한 지금의 마우스 X좌표
tempY = self.event.clientY; // 이벤트(mousedown)이 발생한 지금의 마우스 Y좌표
document.onmousemove = docMove; // mousemove 이벤트 발생시(마우스 움직일때) docMove 함수 호풀
document.onmouseup = new Function("ifdocDrag = false"); //mouseup 이벤트 발생시(마우스버튼이 띄어질때) 드래그 '불가'로
}
function docMove(){ // 실제 IFRAME을 움직이는 함수
if(ifdocDrag){ // 드래그 '가능'일때
titlebar.style.pixelLeft = originXtitle + self.event.clientX - tempX;
// 타이틀바 X좌표는= [원래X] + [현재마우스의X] - [클릭한순간의(mousedown발생했을때의)마우스X]
titlebar.style.pixelTop = originYtitle + self.event.clientY - tempY;
// 타이틀바 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
document.all['docFrame'].style.pixelLeft = originXdoc + self.event.clientX - tempX;
// IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
document.all['docFrame'].style.pixelTop = originYdoc + self.event.clientY - tempY;
// IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
return false;
}
}
//-->
</SCRIPT>
</HEAD>
<BODY ondragstart="return false" onselectstart="return false" unselectale="on" style="margin-right:0;" marginwidth=0 bgcolor="#808080">
<!-- 움직일IFRAME -->
<iframe name="docFrame" id="docFrame" style="position:absolute;left:123;top:71;width:794px;height:596px;z-index:1;" src="http://muldae.x-y.net/cgi-bin/tt/board/ttboard.cgi?db=freeboard" border=0 frameborder=0 scrolling=no>
</iframe>
<!-- IFRAME과 같이 움직일 타이틀바 레이어 (마치 IFRAME 과 한몸뚱아리처럼..)-->
<div id="titlebar" style="position:absolute;left:120;top:49;width:800px;height:621px;z-index:0;;">
<img src="http://myhome.hanafos.com/~muldae76/image/board_title.gif" style="position:absolute;left:0;top:0;width:800px;height:21px;z-index:0;" onmousedown="docDrag();">
<img src="http://myhome.hanafos.com/~muldae76/image/close_out.gif" style="position:absolute;left:779;top:5;z-index:2;">
<img src="http://myhome.hanafos.com/~muldae76/image/800_back.gif" style="position:absolute;left:0;top:21px;">
</div>
</bODY>
</HTML>
원리는 아주 간단합니다
일단 IFRAME이 있고
IFRAME 위에 타이틀바 레이어가 딱 붙어있죠. (마치 한몸뚱아리처럼)
물론 타이틀바레이어는 '부모'윈도가 갖고 있는놈이구요.
대략적인 흐름으로 설명 하자면 이렇습니다
[타이틀바에 마우스DOWN(버튼이눌려진상태)]
↓
[드래그 '가능'상태]
↓
[마우스MOVE]
↓
[마우스DOWN이벤트에서의 좌표와 마우스MOVE 후의 좌표의 차이만큼 IFRAME 의 좌표를 변경]
설명이 좀 부족해 보이지만
소스와 주석을 보시면 쉽게 알수 있을겁니다 ( 사실 대단한것도 아님 --;)
더불어 타이틀바 오른쪽에 '닫기'버튼의 기능까지 첨가하면 멋진 '윈도흉내내기'가 되겠죠.
예제: http://myhome.hanafos.com/~muldae76/iframe.html
응용: http://myhome.hanafos.com/~muldae76/index.html
<HTML>
<HEAD>
<TITLE>IFRAME 드래그하기</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var ifdocDrag = false; // 드래그 불/가 를 저장할 논리변수
function docDrag(){ // 마우스버튼이 눌려진 상태에서 드래그를 준비하는 함수
ifdocDrag = true; // 드래그 '가능'
originXtitle = titlebar.style.pixelLeft; //원래의 타이틀바 X 좌표 (스타일에서의 'left')
originYtitle = titlebar.style.pixelTop; //원래의 타이틀바 T 좌표 (스타일에서의 'top')
originXdoc = document.all['docFrame'].style.pixelLeft; // 원래의 IFRAME X좌표 (스타일에서의 'left')
originYdoc = document.all['docFrame'+ '].style.pixelTop; // 원래의 IFRAME Y좌표 (스타일에서의 'top')
tempX = self.event.clientX; // 이벤트(mousedown)이 발생한 지금의 마우스 X좌표
tempY = self.event.clientY; // 이벤트(mousedown)이 발생한 지금의 마우스 Y좌표
document.onmousemove = docMove; // mousemove 이벤트 발생시(마우스 움직일때) docMove 함수 호풀
document.onmouseup = new Function("ifdocDrag = false"); //mouseup 이벤트 발생시(마우스버튼이 띄어질때) 드래그 '불가'로
}
function docMove(){ // 실제 IFRAME을 움직이는 함수
if(ifdocDrag){ // 드래그 '가능'일때
titlebar.style.pixelLeft = originXtitle + self.event.clientX - tempX;
// 타이틀바 X좌표는= [원래X] + [현재마우스의X] - [클릭한순간의(mousedown발생했을때의)마우스X]
titlebar.style.pixelTop = originYtitle + self.event.clientY - tempY;
// 타이틀바 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
document.all['docFrame'].style.pixelLeft = originXdoc + self.event.clientX - tempX;
// IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
document.all['docFrame'].style.pixelTop = originYdoc + self.event.clientY - tempY;
// IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
return false;
}
}
//-->
</SCRIPT>
</HEAD>
<BODY ondragstart="return false" onselectstart="return false" unselectale="on" style="margin-right:0;" marginwidth=0 bgcolor="#808080">
<!-- 움직일IFRAME -->
<iframe name="docFrame" id="docFrame" style="position:absolute;left:123;top:71;width:794px;height:596px;z-index:1;" src="http://muldae.x-y.net/cgi-bin/tt/board/ttboard.cgi?db=freeboard" border=0 frameborder=0 scrolling=no>
</iframe>
<!-- IFRAME과 같이 움직일 타이틀바 레이어 (마치 IFRAME 과 한몸뚱아리처럼..)-->
<div id="titlebar" style="position:absolute;left:120;top:49;width:800px;height:621px;z-index:0;;">
<img src="http://myhome.hanafos.com/~muldae76/image/board_title.gif" style="position:absolute;left:0;top:0;width:800px;height:21px;z-index:0;" onmousedown="docDrag();">
<img src="http://myhome.hanafos.com/~muldae76/image/close_out.gif" style="position:absolute;left:779;top:5;z-index:2;">
<img src="http://myhome.hanafos.com/~muldae76/image/800_back.gif" style="position:absolute;left:0;top:21px;">
</div>
</bODY>
</HTML>
댓글 16
-
뒹굴리스트
2002.10.22 19:13
와...대단하시네요+_+ -
보거
2002.10.23 21:59
- _-)b;; -
★지니_。
2002.10.24 06:35
굳입니당 넘넘 좋아여^^ -
난말야..
2002.10.24 09:26
정말 신기하네요. -
낭만곰도리
2002.10.24 17:25
와, 정말 신기해요 굿굿굿 ^-^)b -
Kite
2002.10.28 10:01
웃.. 제가 원하던;;; -
*^^*
2002.10.29 00:23
ㅎㅎㅎㅎ 사인이 더 신기하네요..ㅎㅎ 귀엽당 -
전상윤
2002.10.30 14:50
이야.. 멋지네요 ^^; -
김상우
2002.10.31 11:52
아 감동... 애플같은 느낌이 드네요..^^ -
투유
2002.11.10 18:39
-
Eccen
2002.11.14 14:22
투유 // 실험성은 좋은데 솔직히 불편하네요;; -
┏ⓩZion┛
2002.12.09 00:14
style="position:absolute;left:779;top:5;z-index:2;"
이거 어떤건지 설명좀 해주실래요? ;; 다른건 알겠는데 이거 하나가 막히는군요; -
이루
2003.01.10 13:05
멋져여~
제가 찾던거에여..흑흑
드뎌..찾았네여... 아이디어 구웃~~ >.</ -
박종현
2003.01.14 07:04
멋지네요 그런데 창을 두개를 동시에 띄울수는 없나요? -
ddalkia
2003.02.11 09:15
┏ⓩZion┛ >> 님께 답변
style="position:absolute;left:779;top:5;z-index:2;"
position <= 위치
absolute <= 절대적인
위치는 고정하는데 왼쪽에서 779 위쪽에 5픽셀 자리에 절대적으로 뭐.;; 안움직이게
이런뜻으로 해석하면 될것 같구 z-index는 2 <= 레이어의 순서를 나타냅니다.
1,2,3,4 순으로 위쪽으로 올라옵니다.;
이게 맞나.;;;; -
Rootin
2003.02.14 21:02
http://vbgame.net
지금은 소스를 공개했군요 +_+
제목 | 글쓴이 | 날짜 |
---|---|---|
붙여넣기 및 마우스 우측버튼 금지.. [3] | 민이 | 2002.10.31 |
여러개의 창을 동시에 열고 ~~함목~~에 닫기 | 디아릭스 | 2002.10.30 |
원하는 부분에 문서나 이미지 불러들이기 | 디아릭스 | 2002.10.30 |
노래방 에 보면 나오는 글씨 같은 소스 | 臥龍先生 | 2002.10.27 |
IFRAME을 드래그해서 크롬리스처럼 사용하기 [16] | 멀대 | 2002.10.21 |
숫자 세자리마다 컴마(,) 찍어주기 [1] | 행복한고니 | 2002.10.20 |
단축키로 페이지이동 [17] | 아벨라 | 2002.10.18 |
E-mail 추출기에 걸리지 않게 E-mail 링크하기 [2] | 아이쿠 | 2002.10.18 |
필드값의 유효성을 검사하는 함수 | 아이쿠 | 2002.10.18 |
MSN 메신져 이모티콘을 게시판에서 사용해보자! [6] | 민이 | 2002.10.16 |
공중에 이리저리 떠다니는 레이어 [2] | 아벨라 | 2002.10.13 |
문자열 길이(byte)에 따라 자르기... | 행복한고니 | 2002.10.11 |
크롬리스 윈도우창 띄우기 [21] | 臥龍先生 | 2002.10.09 |
Select의 값을 iframe으로 넣는것입니다. [3] | ZipShin | 2002.10.03 |
엔지오 메인 화면에서 배너 클릭하면 뜨는 프롬프트 달기 [1] | Eccen | 2002.09.30 |
크롬리스 인터6.0 sp1인한 문제 수정패치 [1] | 이태운 | 2002.09.29 |
페이지 맨위로 이동하는 top 버튼 [7] | 조정환 | 2002.09.28 |
자바스크립트로 클릭하면 출력되는 메뉴를 만들어 보자~!!! [6] | 유지호 | 2002.09.20 |
간단하고 빠른 페이지포워딩 [3] | Draco | 2002.09.19 |
asx파일 만들어 나만의 뮤직비디오 만들기 [5] | zinie | 2002.09.19 |