티스토리 뷰
사진작가들이 쓰는 Lightbox 얘기가 아니다. 웹개발자나 디자이너에게 Lightbox는 웹 페이지 상에서 이미지들을 뽀대나게 보여주는 일종의 Modal Dialog 형태의 UI 컴포넌트다.
대표적인 Lightbox 라이브러리로는 (유행이 좀 지난 느낌이 있지만) prototype / script.aculo.us 를 사용하여 만든 Lightbox2를 보면 어떤 것인지 쉽게 이해 된다. 요즘 유행하는 jQuery용 플러그인은 넘쳐난다.
하지만, 개인적으로 prototype이나 jQuery 보다는 dojo를 선호하기 때문에(대부분의 경우엔 별 차이가 없지만, 마이너리티 체질의 똥고집이랄까...) dojo로 Lightbox를 만들기로 했는데... 웬걸 -.-; dojox.image.Lightbox라는 녀석이 이미 있더라. 그냥 쓸까 하다가... 이 녀석이 dijit(dojo의 위젯 시스템; jQuery UI 쯤에 해당하는 모듈이다)에 의존하는 관계로 버림받고 있길래 간단히 하나 맹그러봤다.
솔직히... 만만하게 보고 시작했는데... 생각보다는 많이 복잡하더라. -,.-;;;
이름은 Lightbox와 비슷하면서도 dojo로 만들었다는 느낌이 들도록 Delightbox라고 지었다 ^^;
각설하고, 사용법을 보자면 대충 이런 식이다:
1. (jQuery빠들이 좋아하는) unobtrusive 스타일
iolo.ui.Delightbox.create(dojo.query('#content a.delightbox'));
html 페이지의 모양새가 대충 이런식이라고 하면:
...
<div id="content">
...
<a href="원본이미지url" title="제목" class="delightbox"><img src="썸네일이미지url" /></a>
<a href="원본이미지url" class="delightbox">제목</a>
...
위의 예는 html 페이지 내에서 id가 content인 태그 안쪽에서 "delightbox"라는 css 클래스를 가진 모든 a 태그를(dojo.query는 jQuery의 $의 여러가지 기능 중의 하나라고 보면 된다) delightbox 형태로 바꾼다.
이 방식의 장점은 javascript를 쓸 수 없는 환경에서도 그럭저럭 보이는 거라고 하는데... 글쎄.. 과연 그럴까? 아무튼, unobtrusive javascript에 대해서는 예전에 쓴 글을 참고하시라.
2. (dojo빠들이 좋아하는) json datastore 스타일
iolo.ui.Delightbox.fetch('http://iolo.pe.kr/screenshots/screenshots.json');
json 파일은 대충 이런 식인데, thumbnail이 없으면 title을 사용한다:
{
items: [
{ url: '원본 이미지 url', title:'제목', thumbnail:'썸네일 url' },
...
]
}
위의 예는 주어진 url에서 json으로 된 데이터를 ajax로 읽어와서 그 안에 있는 내용을 토대로 동적으로 delightbox가 결합된 html을 만든다.
3. 코딩으로 처리하기
이건 소스 코드를 참고해서 알아서 하시면 되겠다. :p 소스
덧1. dojo의 크로스 도메인 빌드를 지원하도록 만들었으므로, 내 웹서버에는 이것과 관련해서는 js 파일이 하나도 필요없다. 여기에 대해서는 테스트 페이지의 소스 코드를 참조하시면 되겠다.
덧2. 아! 빼먹을 뻔 했는데... IE에선 안된다. CSS만 좀 손봐주면 될것 같은데... 귀찮아서-,.-;;;
'hacking > web' 카테고리의 다른 글
웹 기반 스펠 체커 API + 다음 오픈 에디터 플러그인 (4) | 2009.11.19 |
---|---|
Google Chrome Frame! - 구린 IE를 피해가는 구글의 구린 꼼수 (0) | 2009.09.23 |
심심풀이 코딩 - 자바스크립트로 만든 벽돌깨기~ (7) | 2009.08.24 |
Road to Web3.0 (2) | 2009.06.08 |
웹개발자(또는 디자이너)를 위한 퀵레퍼런스카드 (3) | 2009.04.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- ***1/2
- 해남
- web
- HTML5
- 영화
- Java
- 여행
- **
- 땅끝마을
- JavaScript
- Dojo
- 자바스크립트
- DeveloperWorks
- 자전거
- docker
- Eclipse
- ***
- nodejs
- CSS
- 노래
- webapp
- 장필순
- jQuery
- Prototype
- Ajax
- 책
- 독후감
- maven
- ****
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함