티스토리 뷰
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
/////////////이전한 디비에서의 큰 사진 resize를 위해 /////////////////
var resizePhoto = {
vars : {"width":600, "element":"articleBody"},//초기값.. 뭐하면 본문 테이블 넓이를 재어 와도 됨, 한정지을 elementById
bind:function(obj, evt, fun){
if(obj.addEventListener) obj.addEventListener(evt, fun, false);
else obj.attachEvent("on"+evt, fun);
},
init:function(){
var imgs = document.getElementById(resizePhoto.vars.element);///한정할 부분 .. 여기선 기사 본문 이니 거기부터 이미지 탐색
if(imgs && imgs!="undefined"){
resizePhoto.vars.imgs=imgs;
resizePhoto.findImgTags();
}
},
findImgTags:function(){//이미지 찾기
var imgs = this.vars.imgs.getElementsByTagName('img');
if(imgs.length>0){
this.vars.imgObj=imgs;
this.sizeOf();
}
},
realSize:function(src){
var img = document.createElement("img");
img.src = src; //추가 시킨후 크기만 재어 옴
var _w = img.width;
var _h = img.height;
//document.body.appendChild(img);
//document.body.removeChild(img);//꿀럭 거리는게 싫어서 주석, 무슨일 있으려나 ㅡㅡa
return {w:_w, h:_h};
},
sizeOf:function(){//사이즈 조절
var obj = this.vars.imgObj;
for(var i=0; i<obj.length; i++){
var realWidth = this.realSize(obj[i].src).w;//실제 넓이
if(realWidth>this.vars.width && obj[i].width!="undefined"){
var w = obj[i].width;//태그 넓이
var h = obj[i].height;
var src = obj[i].src;
obj[i].setAttribute("width", w<this.vars.width?w:this.vars.width);
obj[i].setAttribute("title", "클릭하면 큰 이미지로 볼수 있습니다.");
obj[i].style.border = "2px solid #f4f4f4";
this.clickPhotoEvt(obj[i], src, realWidth, h);
}
}
},
clickPhotoEvt:function(obj, src, w, h){//이벤트 줌
obj.style.cursor = "pointer";
this.bind(obj, "mouseover", function(){
obj.style.border = "2px solid #696969";
});
this.bind(obj, "mouseout", function(){
obj.style.border = "2px solid #f4f4f4";
});
this.bind(obj, "click", function(){
resizePhoto.clickPhoto(src, w, h);
});
},
clickPhoto:function(src, w, h){//클릭
this.positionLayer(src, w, h);
this.bind(window, "resize", function(){
if(document.getElementById("imgResizeView") || document.getElementById("imgResizeBox")){
resizePhoto.closeLayer();//리사이즈 하기전 제거
resizePhoto.positionLayer(src, w, h);
}else{//remove event
if(window.removeEventListener) window.removeEventListener("resize");
else window.detachEvent("resize");
}
});
},
positionLayer:function(src, w, h){//이미지 띄우기 실행
var cw = document.body.clientWidth > document.body.scrollWidth ? document.body.clientWidth : document.body.scrollWidth;
var ch = document.body.clientHeight > document.body.scrollHeight ? document.body.clientHeight : document.body.scrollHeight;
var st = document.body.scrollTop;
var xc = cw>w ? (cw/2)-(w/2) : 0; //가운데 찾기
var tp = st + 10; //위로 부터 띄워서
var tw = cw>w ? cw : w; //레이어크기 , 이미지가 더 크다면 이미지 크기로
var th = (ch>h ? ch : h)+tp; //레이어크기 , 이지가 더 크다면 이미지 크기로 + 스크롤탑
xc = parseInt(xc);
tp = parseInt(tp);
tw = parseInt(tw);
th = parseInt(th);
//background div
var div = document.createElement("div");
div.setAttribute("width", tw);
div.setAttribute("height", th);
div.setAttribute("id", "imgResizeView");
div.setAttribute("title", "클릭하면 이미지가 사라집니다.");
div.style.position = "absolute";
div.style.width = tw + "px";
div.style.height = th + "px";
div.style.top = "0px";
div.style.left = "0px";
div.style.backgroundColor = "#ccc";
div.style.opacity = "0.5";
div.style.filter = "alpha(opacity:50)";
div.style.cursor = "pointer";
this.bind(div, "click", resizePhoto.closeLayer);
//if(div.addEventListener) div.addEventListener("click", resizePhoto.closeLayer, false);
//else div.attachEvent("onclick", resizePhoto.closeLayer);
//이미지 div
var imgDiv = document.createElement("div");
imgDiv.setAttribute("width", w);
imgDiv.setAttribute("height", h);
imgDiv.setAttribute("id", "imgResizeBox");
imgDiv.setAttribute("title", "클릭하면 이미지가 사라집니다.");
imgDiv.style.position = "absolute";
imgDiv.style.top = tp + "px";
imgDiv.style.left = xc + "px";
imgDiv.style.width = w + "px";
imgDiv.style.height = h + "px";
imgDiv.style.backgroundImage = "url("+src+")";
imgDiv.style.cursor = "pointer";
imgDiv.style.border = "3px solid #666";
this.bind(imgDiv, "click", resizePhoto.closeLayer);
//if(imgDiv.addEventListener) imgDiv.addEventListener("click", resizePhoto.closeLayer, false);
//else imgDiv.attachEvent("onclick", resizePhoto.closeLayer);
/*그냥 백그라운드로 씌움
var img = document.createElement("img");
img.setAttribute("width", w);
img.setAttribute("height", h);
img.setAttribute("src", src);
img.style.width = w + "px";
img.style.height = h + "px";
img.style.cursor = "pointer";
img.setAttribute("title", "클릭하면 이미지가 사라집니다.");
if(img.addEventListener) img.addEventListener("click", resizePhoto.closeLayer, false);
else img.attachEvent("onclick", resizePhoto.closeLayer);
imgDiv.appendChild(img);
*/
document.body.appendChild(div); /////레이어 뜸.
document.body.appendChild(imgDiv); //그위에 이미지(img는 absolute ;;;
},
closeLayer:function(){
var div = document.getElementById("imgResizeView");
var imgbox = document.getElementById("imgResizeBox");
if(imgbox) document.body.removeChild(imgbox);
if(div) document.body.removeChild(div);
}
}
사용법...줄이고자하는 페이지에 넣어줌
<script type="text/javascript">
resizePhoto.bind(window, 'load', resizePhoto.init);
</script>
'컴터 > Javascript / html' 카테고리의 다른 글
좌우로 슬라이드(vertical slide) (0) | 2014.10.10 |
---|---|
javascript hoisting(호이스팅) 이란 (0) | 2014.08.19 |
a 태그에 이미지 백그라운드로 나오게할때 ie만나오고 firefox등에선 안나올때 (1) | 2009.02.11 |
[firefox, chrome, IE] onresize 이벤트 (1) | 2009.01.01 |
댓글
공지사항
최근에 올라온 글
- Total
- 1,770,491
- Today
- 3
- Yesterday
- 19
링크
- Adobe AIR / www.AS3.kr / Actio…
- Adobe AIR Devpia.
- Beyond Tomorrow
- Blog of Shigeru Nakagaki. Let\…
- CSS3 . Info
- Code Weblog
- CodeIgniter 한국사용자포럼 BETA
- ECONOBLOG
- FlexComponent-플렉스 네이버 카페
- Guru's Blog
- Hooney.net - CSS Reference Sit…
- Korean Healthlog
- Raymond.CC Blog
- [Air]AIR_IN_ACTION
- [CSS]후니넷
- [Flex] css 스킨
- [JavaFx] 한글화
- [basic4ppc]괜찮은 사이트
- [flex2책저자]with okgosu (-..-)a
- [flex] stylesheet
- [flex] 예제 많은곳-EBook관련
- [flex]ungsung' study
- [html5-canvas]『 zeroone 』blog
- [html5-iphone]xguru.net
- [html5]korea html5 group
- [html5]sencha touch demos - fr…
- [iPhone]아이군의 블로그
- [iphone] 토리의 놀이터
- [iphone]LambertPark
- [iphone]safari 레퍼런스
- [iphone]피의복수
- [jQuery Plugin] 포토갤러리
- [jQuery] -- jQuery
- [jQuery] 1.1.2 API Browser
- [jQuery] IBM 사이트 설명
- [jQuery] 예제 많음
- [javascript]JKwang's Programs
- [red5]
- [그래픽js] 끝내줌.ㅋ
- [김프]무료 이미지 관리툴 -비교대상 포토샵
- [무료캡쳐프로그램] jing Project - swf …
- [무료호스팅]1.5Gb 줌
- [서프라이즈] - 대문
- [실버라이트] msdn
- [실버라이트]ONESTONE
- [실버라이트]ZZANGMYON BLOG♡
- [실버라이트]사진속에 혼을 담는 개발자
- [실버라이트]유령회사 공도소프트
- [실버라이트]이과장의 프로그래밍이야기
- [오픈소스검색엔진]루씬 한글분석기 오픈소스 프로젝트
- [해킨토시]x86osx.com
- adobe 예제 사이트
- d-|-b First Of May
- lovesera.com: ART of VIRTUE
- rollin96님의 노트-air/flex Tip
- w3school.com
- 굿네이버스
- 꿀뷰, 바닥, 술집의 개발자
- 나물이네-자취생들의 먹거리 해결..ㅋ
- 낙장불입 인생막장
- 내 눈으로 본 한국, 한국인....
- 딴동네-Air/Flex 영상 강좌
- 레인 에디터
- 류종택의 프로그래밍 강의실
- 리아 코리아
- 무료 호스팅 해줌 - 디지문
- 버터백통의 Action Script 레시피
- 살아 숨 쉬는 웹 - 블루비
- 색깔있는 진보 칼라TV
- 시작하세요! iphone3
- 아이디어 상품
- 아폴로케이션[Adobe AIR]
- 엑셀 도움말
- 영원의 헤아림-검쉰-Flex
- 오픈소스 FLV 플레이어
- 울나라 Ajax Library
- 웹사이트 방문자 통계
- 웹카페-css 잘나왔뜸
- 웹캠으로하는 멋진 게임
- 웹프로그래머의 홈페이지 정보 블로그
- 윤훈남의 액션스크립트3.0
- 조인시 위키
- 체리필터의 인생이야기
- 충청투데이 알짜 뉴스
- 칸과칸사이
- 태우\'s log - web 2.0 and beyond
- 파비콘 제네레이터
- 파인애플 밴드
- 팬소년이야기
- 한국의 대표 진보언론 민중의소리 - 전체 기사
- 훈스닷컴
- Feeding.kr의 일용할양식
- [javascript]기억하고 싶은 것들
- XML-RPC-metaWeblog 설명
- [IT웹툰]미닉스의 작은 이야기들
- outsider 개발자
- 애매한 발음 알아볼때
- [android]Photographer. Android…
- [android]mSurf Lab 안드로이드 개발 정보…
- [android]안드로이드 개발 정보
- [android]안드로이드 개발하는놈
- [android]안드로이드 프로그래밍 정복
- [android]참 쉽습니까?
- [android]커니의 안드로이드 이야기 - Andro…
- [android]회색의 구글 안드로이드 개발
- 장군블로그 [진심을 담는 마크업. 웹 표준. 웹 접근성…
- 백남중
- NARADESIGN:BLOG
- [php.js] php함수 js로 옮겨놓은 곳
- javascript 이론적으로 설명잘해놓은곳
- JavaScript Garden
- Angularjs 등 javascript 설명
- node.js
- 유용한 코드 많은 곳...코드쪼가리?
- HTML5 Demos- 최고!!!
- Firejune - The Web is still ch…
- 글읽어주는 사이트
- [publisher] Clearboth
- [nodejs]Hello World!!
- angularjs2 - 강추
- 모든 브라우저에서 동작하는 canvas
- Beautiful Jquery Plugin MopTip…
- 김진형교수의 SW정책 단상
- Comments for 미스타표, 즐기며 배우며.
- [외국개발자]곰같은블로그
- [opencv]다크 프로그래머
- [YouTube]日本人の知らない日本語
- 영어학습 자료실 EnglishCube - 추천사이트, …
- がんばれ! 日本語
- [youtube]serina hwang
- 하라마~~~
- O HOUSE : 라이프 매거진
- 아름다운 하우스 : 네이버 블로그
- [인테리어]김반장의 이중생활
- [리모델링]Pastel design & Archi te…
- [리모델링]대전 아파트 인테리어 전문 업체! 엘림하우스
- [리모델링]가람홈스토리
- :: Back to the Mac
- Swift 언어 개발문서
- [swift]Seorenn SIGSEGV
- Swift Lab를 위한 댓글
- 콩닥맘의 차니스토리 : 네이버 블로그
- 헬렌의 테이스팅 메뉴 The Tasting Menu
- lovesera: ART of VIRTUE-정진호
- [ionic] saltfactory's blog
- PhoneGap API Documentation
- 김변의 법인등기 : 네이버 블로그
- 면어의 얼렁뚱땅 캘리그라피
- 푸른지성과 카즈미, 그리고 코타의 행복한 세상!
- AnimationKING
- AnimationKING : 네이버 블로그
- POND X P.B.Y
- 도쿄 동경 베쯔니 블로그
- whatdo.net-티티호스팅
TAG
- 충청투데이
- 대전역
- 재개발
- ogv
- 맥북에어 13
- localstorage
- 해킨토시
- html5예제
- 자전거
- 아이폰
- 봄
- 골목
- php
- 고려극장
- 공개
- 자양동
- 넥서스원
- 겨울준비
- 티눈
- jQuery
- flex
- AIR
- 사마귀
- html5
- Alert.show
- exif 정보
- 쌍둥이빌딩
- Ajax
- 안드로이드
- 가오지구