웹마스터 팁
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님께서 알려주신 스크립트로 하려구 하는데, 위처럼 쓰니까 클릭한 후에 그림이 뜨지 않더라구요~~무엇이 잘못된거죠??
제목 | 글쓴이 | 날짜 |
---|---|---|
공유 메모리 제어에 관한 함수 정리 (공유메모리) [5] | Simsim | 2004.08.16 |
접속자 IP 주소 텍스트로 저장 [7] | 천상원 | 2004.08.15 |
PHP프로그램에 간단한 인증(로그인) 걸기. [15] | Lepas | 2004.08.09 |
파일업로드시 파일명 중복되지 않게 저장하기... [6] | 김지호 | 2004.08.06 |
ISO 3166 국가코드로인한, 국가 검출소스 [4] | kein23 | 2004.08.04 |
IP 뒤에 두칸 글자 길이에 따라서 *로 나타내기 [13] | Sy-Tgt(stargt) | 2004.07.30 |
php로 이미지를 mysql디비 저장하고 보여주는 소스 [2] | QQQ | 2004.07.30 |
디비내용을 엑셀,워드,파워포인트 파일로 다운로드 시키는 방법 [13] | QQQ | 2004.07.30 |
rand함수와 mt_rand함수의 비교 [6] | 심심타 | 2004.07.30 |
트랙백 구현하기 - 4. PHP로 트랙백 핑 받기 | TheMics | 2004.07.18 |
트랙백 구현하기 - 3. PHP로 트랙백 핑 보내기 [4] | TheMics | 2004.07.18 |
히어닥 문법 활용 [14] | ☺심심 | 2004.07.13 |
++와 +=1 의 속도차이 [7] | 플로렐라 | 2004.07.12 |
<와 <=의 속도차이? [23] | 플로렐라 | 2004.07.07 |
서버가 느려졌을경우... [20] | 신상우 | 2004.06.28 |
파일업로드시 파일명 중복되지 않게 저장하기.. [8] | 페리 | 2004.06.28 |
페이지에 암호를 걸자..=_= [27] | ☺심심 | 2004.06.25 |
아이피 접근을 막고 메세지 출력하기.. [11] | ☺심심 | 2004.06.24 |
오늘의 명언을 출력해주는 함수 [10] | 김재경 | 2004.06.15 |
3. if문 [13] | 티다 | 2004.06.05 |
그리고 제 경험상으로는(윈도 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)로 사용하면 되겠죠.