웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
미리 보기 : http://allzza.net/aaaa/temp/img_view.html
img 태그로 웹문서에 이미지를 넣어주었을때 자바스크립트로 그 그림의 너비와 높이를
알수는 있지만 이렇게 알수 있는 값은 원래 이미지의 크기가 아니고 웹문서에 삽입된
크기에 불과하다.
다시 말 해서 크기 400 x 300 의 이미지를 다음처럼 넣어주면.....
<img src=어쩌구저쭈구.jpg width=100 height=80>
자바스크립트로 알수 있는 이미지의 크기는 400 x 300 이 아니고 100 x 80 이다.
그래서......
작은 이미지를 클릭했을때 원래그림 크기의 창으로 띄울땐 좀 변칙적인 방법을 써야 한다.
1. window.open 함수를 url 없이 변수를 써서 사용한다.
2. 이렇게 열린 window 에 window.변수.document.write() 함수를 이용해서
자바스크립트와 img 태그를 뿌려준다.
3. 이때 뿌려지는 자바스크립트는 img 태그에 써준 그림 주소의 원래 크기를 알수 있다.
(왜냐면 뿌려지는 img 태그에 width=쫑알쫑알, height=지껄지껄 이라는 부분이 없어
원래 크기의 이미지로 그림이 보여지기 때문이다)
4. window.resizeTo() 함수를 이용해서 얻어진 그림 크기만큼 창의 크기를 줄인다.
5. window.moveTo() 함수를 써서
screen.availWidth 와 screen.availHeight 속성과 그림의 크기를 적당히 가공하여
이 창을 모니터 한가운데로 이동 시킨다.
screen.availWidth 속성은 사용자의 모니터 가로크기를 알수 있는 속성이고
screen............속성은 .........................................이다.
그러므로 그림창을 한가운데로 옮기려면
(모니터 가로크기 - 그림가로크기) / 2 를 x 좌표로 삼고
(모니터 세로크기 - 그림세로크기) / 2 를 y 좌표로 삼아
그림창을 옮기면 될것이다.
6. 고려해야 할 몇몇가지는 새창으로 뜨는 그림창의 body 태그에 가장자리 속성과 스크롤 여부를
써줘야 그림창이 보기 좋을 것이고 가장자리값을 정해주는것도 한 방법이다.
추가) 그림창을 보통의 팝업 창처럼 열 경우 그림의 크기보다 약간 더 큰 창을 열어야
그림이 잘리지 않고 다 보이겠으나
그림창을 창틀없는 윈도우로 연다면(fullscreen) 이런 고려는 필요없겠다.
하나더.
그림창에 뿌려지는 img 태그에 그림을 클릭하면 그림창이 닫히는 스크립트를 추가하면 편할것이다.
기분인데 하나 더.
이러한 방식으로 스크립트를 포함한 문자열을 뿌려줄 경우 그냥 script 태그를 통째로 쓰면
에러 난다. 반드시 <scr + ipt> 또는 </scri + pt> 이런 식으로 나누어 쓰도록 한다.
이왕 주는김에 왕창 더.
스크립트에서 한 명령이나 단위가 끝날때 세미콜론(;)을 적어준다면 줄바꿈은 필요가 없지만
그냥 줄바꿈(n) 을 써주었다. 이게 세계 평화를 위한 내 작은 몸짓이다.
아래 _innerhtml 의 변수가 이해가 안가면 그림창이 떴을때 키보드의 메뉴키를 눌러서 소스보기 하면
아래 정의된 변수 innerhtml 변수가 이해가 갈것이다.
<script>
function my_win(img_url) {
_innerhtml = "<title>그림 보기</title>n<scr"
+ "ipt>nfunction res() {n"
+ "win_height = document.images.maddog.clientHeight;n" //-- 3항의 그림 세로크기
+ "win_width = document.images.maddog.clientWidth;n" //-- 3항의 그림 가로크기
+ "window.self.resizeTo(win_width,win_height);n" //-- 4항
+ "window.self.moveTo((screen.availWidth - win_width)/2, (screen.availHeight - win_height)/2);n}n</scr" //-- 5항
+ "ipt>n"
+ "<body style="border:1 solid black" scroll=no topmargin=0 leftmargin=0>n" //-- 6항
+ "<img border=0 src=" + img_url + " name=maddog onload='res();' alt='클릭하면 창이 닫힐지도 모릅니다'+ ' onclick='window.close()'>n"
var imgwin = window.open("",'_new','fullscreen'); //-- 위에 1항. 여기선 fullscreen 옵션으로 창을 열었다.
imgwin.focus();
imgwin.document.write(_innerhtml); //-- 위에 2항.
}
</script>
<img src=http://is.nate.com/16991/360764_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353338_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353336_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353335_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1><br>
<img src=http://is.nate.com/16991/353334_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353333_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353332_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353331_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
개판 오분전 - 이미지 뷰에 관한 한가지 힌트
2003.10.11 15:17
미리 보기 : http://allzza.net/aaaa/temp/img_view.html
img 태그로 웹문서에 이미지를 넣어주었을때 자바스크립트로 그 그림의 너비와 높이를
알수는 있지만 이렇게 알수 있는 값은 원래 이미지의 크기가 아니고 웹문서에 삽입된
크기에 불과하다.
다시 말 해서 크기 400 x 300 의 이미지를 다음처럼 넣어주면.....
<img src=어쩌구저쭈구.jpg width=100 height=80>
자바스크립트로 알수 있는 이미지의 크기는 400 x 300 이 아니고 100 x 80 이다.
그래서......
작은 이미지를 클릭했을때 원래그림 크기의 창으로 띄울땐 좀 변칙적인 방법을 써야 한다.
1. window.open 함수를 url 없이 변수를 써서 사용한다.
2. 이렇게 열린 window 에 window.변수.document.write() 함수를 이용해서
자바스크립트와 img 태그를 뿌려준다.
3. 이때 뿌려지는 자바스크립트는 img 태그에 써준 그림 주소의 원래 크기를 알수 있다.
(왜냐면 뿌려지는 img 태그에 width=쫑알쫑알, height=지껄지껄 이라는 부분이 없어
원래 크기의 이미지로 그림이 보여지기 때문이다)
4. window.resizeTo() 함수를 이용해서 얻어진 그림 크기만큼 창의 크기를 줄인다.
5. window.moveTo() 함수를 써서
screen.availWidth 와 screen.availHeight 속성과 그림의 크기를 적당히 가공하여
이 창을 모니터 한가운데로 이동 시킨다.
screen.availWidth 속성은 사용자의 모니터 가로크기를 알수 있는 속성이고
screen............속성은 .........................................이다.
그러므로 그림창을 한가운데로 옮기려면
(모니터 가로크기 - 그림가로크기) / 2 를 x 좌표로 삼고
(모니터 세로크기 - 그림세로크기) / 2 를 y 좌표로 삼아
그림창을 옮기면 될것이다.
6. 고려해야 할 몇몇가지는 새창으로 뜨는 그림창의 body 태그에 가장자리 속성과 스크롤 여부를
써줘야 그림창이 보기 좋을 것이고 가장자리값을 정해주는것도 한 방법이다.
추가) 그림창을 보통의 팝업 창처럼 열 경우 그림의 크기보다 약간 더 큰 창을 열어야
그림이 잘리지 않고 다 보이겠으나
그림창을 창틀없는 윈도우로 연다면(fullscreen) 이런 고려는 필요없겠다.
하나더.
그림창에 뿌려지는 img 태그에 그림을 클릭하면 그림창이 닫히는 스크립트를 추가하면 편할것이다.
기분인데 하나 더.
이러한 방식으로 스크립트를 포함한 문자열을 뿌려줄 경우 그냥 script 태그를 통째로 쓰면
에러 난다. 반드시 <scr + ipt> 또는 </scri + pt> 이런 식으로 나누어 쓰도록 한다.
이왕 주는김에 왕창 더.
스크립트에서 한 명령이나 단위가 끝날때 세미콜론(;)을 적어준다면 줄바꿈은 필요가 없지만
그냥 줄바꿈(n) 을 써주었다. 이게 세계 평화를 위한 내 작은 몸짓이다.
아래 _innerhtml 의 변수가 이해가 안가면 그림창이 떴을때 키보드의 메뉴키를 눌러서 소스보기 하면
아래 정의된 변수 innerhtml 변수가 이해가 갈것이다.
<script>
function my_win(img_url) {
_innerhtml = "<title>그림 보기</title>n<scr"
+ "ipt>nfunction res() {n"
+ "win_height = document.images.maddog.clientHeight;n" //-- 3항의 그림 세로크기
+ "win_width = document.images.maddog.clientWidth;n" //-- 3항의 그림 가로크기
+ "window.self.resizeTo(win_width,win_height);n" //-- 4항
+ "window.self.moveTo((screen.availWidth - win_width)/2, (screen.availHeight - win_height)/2);n}n</scr" //-- 5항
+ "ipt>n"
+ "<body style="border:1 solid black" scroll=no topmargin=0 leftmargin=0>n" //-- 6항
+ "<img border=0 src=" + img_url + " name=maddog onload='res();' alt='클릭하면 창이 닫힐지도 모릅니다'+ ' onclick='window.close()'>n"
var imgwin = window.open("",'_new','fullscreen'); //-- 위에 1항. 여기선 fullscreen 옵션으로 창을 열었다.
imgwin.focus();
imgwin.document.write(_innerhtml); //-- 위에 2항.
}
</script>
<img src=http://is.nate.com/16991/360764_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353338_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353336_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353335_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1><br>
<img src=http://is.nate.com/16991/353334_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353333_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353332_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
<img src=http://is.nate.com/16991/353331_2.jpg onclick="javascript:my_win(this.src)" width=100 height=80 border=1>
댓글 5
-
TheMics
2003.10.11 19:56
-
오우
2003.10.11 21:23
근데 닫지 않고 곧바로 클릭하면;
크기만 바뀌네요 'ㅡ')!? -
미친개
2003.10.12 02:00
윈도우 98에서 이미지를 담은 창이 크롬레스로 모니터 한가운데서 보이기때문에
꽤 멋져보여서 한번 올려본건데
xp 에서는 별루였던가보네요.
그리고 TheMics 님 함수 멋지네요. -
TheMics
2003.10.14 19:43
98에서는 잘 되네요;;쿨럭;;;; -
최홍수
2004.01.12 03:10
<img src="../../image/tour/europe/london1.jpg" onclick="javascript:img_viewer(this.src)" width="287" height="430" border="0" alt="런던 히드로 공항에서..." style="cursor:hand">
TheMics님께서 알려주신 스크립트로 하려구 하는데, 위처럼 쓰니까 클릭한 후에 그림이 뜨지 않더라구요~~무엇이 잘못된거죠??
제목 | 글쓴이 | 날짜 |
---|---|---|
[초간단 자바스크립트!] 자바로 플래시 따라하기! [3] | ∑Ztxy | 2003.10.15 |
스물을 세면 죽음이야~~~ [20] | 미친개 | 2003.10.14 |
[초간단 자바스크립트!] 트랜지션 공지사항!! | ∑Ztxy | 2003.10.13 |
플래시 크기 바꾸기 [IE/NS 겸용] [4] | teslaMINT | 2003.10.13 |
새창 띄운후 부모창 확인없이 닫기... [4] | PHASE | 2003.10.12 |
개판 오분전 - 이미지 뷰에 관한 한가지 힌트 [5] | 미친개 | 2003.10.11 |
[초간단 자바스크립트!] 날짜 카운터! 커플홈에 강추!! [15] | ∑Ztxy | 2003.10.08 |
개판 오분전 만년달력......ㅡ,.ㅡ [4] | 미친개 | 2003.10.08 |
게시판 스킨에 프린트 버튼 추가하기 [3] | PHASE | 2003.09.30 |
[초간단 자바스크립트!] 홈페이지에 FTP 폼 넣기?! [10] | ∑Ztxy | 2003.09.29 |
[초간단 자바스크립트(강의)!] 입력박스에 입력한 주소로 이동하기... | ∑Ztxy | 2003.09.27 |
[초간단 자바스크립트(강의)!] 풀스크린 창 띄우기... [3] | ∑Ztxy | 2003.09.27 |
[초간단 자바스크립트(강의)!] 버튼을 눌러서 배경색 바꾸기 [5] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트!] 이미지에 스포트라이트 효과주기... [1] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트!] 뒤로,앞으로,중지,홈으로 버튼 만들기... [7] | ∑Ztxy | 2003.09.26 |
[초간단 자바스크립트!] 창 이동시 경고 메세지 띄우기...!;;; [2] | ∑Ztxy | 2003.09.26 |
플레쉬 메뉴를 표방한..=ㅁ= 자바스크립트의 수작 버튼 밑으로 스크롤 되는 아이콘입니다. [47] | beMax | 2003.09.14 |
### MSN/Windows Messenger용 친구 추가스크립트 ### [10] | 웹스 | 2003.09.05 |
변수란? [1] | 타키 | 2003.09.04 |
진수란? [4] | 타키 | 2003.09.04 |
그리고 제 경험상으로는(윈도 98/6.0sp1에서 테스트) window.open에서 자정한 가로세로가 순수한 내용부분의 크기(하얀 부분)인데 반해 resizeTo()는 타이틀바나 창 테두리 크기까지 창 크기에 포함시킵니다...즉 실제보다 창이 더 작게 잡히는 경우가 생긴다는 말이죠.
때문에 저는 new Image()를 이용해 이미지변수의 가로세로를 알아내 그 사이즈만큼의 창을 띄우는 방법을 이용합니다.
function img_viewer(img) {
obj = new Image();
obj.src = img.src;
vwin = window.open('','','toolbar=no,scrollbars=no,menubar=no,resizable=no,width='+obj.width+',height='+obj.height);
vwin.document.write('<body topmargin=0 leftmargin=0><img src="'+obj.src+'" onclick="window.close()" style="cursor:hand"></body>');
}
역시 img_viewer(this.src)로 사용하면 되겠죠.