좌측엔 사이드바가 있고 우측엔 세로 100%짜리 본문 영역이 있는 2단으로 된, 전체적으로는 가운데 정렬이고 영역 사이에 구분선이 있는 블로그 스킨을 만들려면 어떻게 하는 게 좋을까요?

조건은 제목과 같고 정리하면 아래와 같습니다.

  • div 사용 (table 은 사용하지 않음)
  • 총 2단 - 좌측엔 사이드바, 우측엔 컨텐츠 영역
  • 레이아웃은 화면 가운데 정렬함
  • 두 단 사이에는 구분선이 존재하는데 화면 꼭대기에서부터 끝까지 구분선이 지어짐

가장 간단한 방법으로 구현을 해보죠. 핵심을 정리하면 다음과 같겠죠.

  1. 문서형은 xhtml, strict 로 정의한다.
  2. 두 div을 height:100%; 를 준다.
    1. html, body 에도 height:100%; 를 준다.
    1. 사실 div에는 min-height:100%; 를 준다.
  3. 두 div 을 position:relative; margin:0 auto; 인 div 로 감싼다.
  4. 두 div 을 z-index로 레이어링 한다.

이걸 그림으로 그려보면 다음과 같은 구조라 할 수 있겠죠?


z-index 는 레이어링을 하는 것이기 때문에 이를 3차원으로 생각하면 이렇게 볼 수도 있고요.


물론 #wrapper 는 레이어링을 한 건 아니지만, #leftArea 와 #rightArea 를 감싼 div 이니 위와 같이 생각해도 무방할 거예요

이걸 코드로 정리하면 아래와 같습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>div와 z-index를 서서 레이아웃 잡기</title>
<style type="text/css">
html, body {
margin:0;
height:100%;
}
#wrapper {
margin:0 auto;
position:relative;
width:600px;
height:100%;
}
#leftArea {
position:absolute;
top:0px;
left:0px;
width:100%;
min-height:100%;
background:#FFD149;
z-index:0;
}
#rightArea {
position:absolute;
top:0px;
left:0px;
width:400px;
min-height:100%;
margin-left:200px;
background:#3EBAEB;
z-index:1;
border-left:3px solid #000;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="leftArea">
사이드바<br/> 영역이니<br/> 보통은<br/> 메뉴가<br/> 들어가겠죠
</div>
<div id="rightArea">
여기는 본문 영역으로 많이 쓰고요
</div>
</div>
</body>
</html>

사실 가장 많이 쓰는 방법은 z-index 를 사용하지 않고 두 div 을 float:left; 로 붙이는 게 일반적이죠.

하지만, 그 방법은 ie 버그도 있고, #wrapper 의 사이즈를 제대로 맞추지 않으면 둘 중 하나가 아래로 내려가기도 하는 등 좀 귀찮은 면이 있어요. 그러느니 그냥 z-index 로 레이어링을 해버리는 거죠.

나름 편리한 방법이라 할 수 있습니다. :)
,
png는 여러 가지 면에서 매우 유용한 이미지 파일 포맷입니다.
물론 다들 아시겠지만요. :)

그런데, 역시 다들 아시다시피 인터넷 익스플로러 (이하 ie) 는 png 의 장점 중 하나인 알파채널을 제대로 지원하지 못합니다. 많은 사람들이 사용하고 있는 ie5.5와 ie6가 대표적인 예겠지요. (ie7 에서는 지원됩니다.)



저렇게 배경에 겹쳐 보이도록 설정된 알파 채널이


ie 에서는 그냥 불투명하게 보인다는 거죠.


하지만, 많은 사람들의 노력으로 (^^) ie 에서 png의 알파채널을 제대로 표현해주는 방법들이 개발되었습니다. 다음의 방법을 따르면 됩니다.



1. 아래의 자바스크립트를 <head>와 </head> 사이에 넣어주세요.

<script language="javascript">
<!--
    function setPng24(obj) {
        obj.width=obj.height=1;
        obj.className=obj.className.replace(/\bpng24\b/i,'');
        obj.style.filter =
        "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');"
        obj.src='';
        return '';
    }
//-->
</script>

2. 역시 아래의 스타일 정의를 <head>와 </head> 사이에 넣어주세요. (물론 style.css 등으로 별도의 css 파일로 만들어도 되지요.)

<style type="text/css">
.png24 {
   tmp:expression(setPng24(this));
}
</style>

3. 그러고 나서 원하는 png 파일을 사용할 때 class="png24" 라고 적어주시면 됩니다.

<img src="./images/we-want-alpha.png" class="png24">

4. 끝



이 방법이 좋은 이유는 페이지에 1과 2의 자바스크립트 + 스타일을 한번만 정의해 두면 그 다음부터는 class="png24" 로 언제든지 편하게 적용시킬 수 있다는 점입니다. 너무나 편하죠. :)


,
우리가 흔히 웹사이트의 본문에 사용하는 한글 폰트의 크기는 12px 입니다. 하지만, 폰트의 단위가 px (픽셀)만 있는 건 아니죠. pt (포인트)도 있습니다. 12px = 9pt 입니다. 폰트의 크기를 표현하는 단위는 이것들 말고도 더 있죠. 간단히 말해 이렇습니다.

12px = 9pt = 0.75em = 75%

16px = 12pt = 1em = 100%

이 중에 주목할 만한 단위는 em 입니다. 1em은 시스템 (즉, 브라우저) 기본 폰트의 가로 크기와 같은 값을 가지는 재밌는 단위이지요. 또한 위의 관계를 보다보면 알다시피 1em = 100% 입니다. 2em = 200% 겠죠.

이 em이 편리한 이유는 시스템의 폰트에 반응하는 단위이기 때문에 특정 웹페이지에 적힌 글자들을 크게 볼 수도 있고, 작게 볼 수도 있습니다. 지금 이 페이지만 해도 CTRL키를 누른 상태로 굴리는 마우스의 휠에 반응합니다. 해보세요. 글씨가 작아지기도 하고 커지기도 하는 걸 볼 수 있을 거예요. 만약 제가 레이아웃을 정하는 폭들에도 em을 사용했다면 레이아웃 각각의 요소들의 높이와 폭도 변했겠지요.

외국 사이트들을 서핑하다 보면 깨알 같은 크기로 쓰여진 페이지들이 있습니다. 영어권 독자인 경우엔 모르겠지만 비영어권 독자들에겐 곤욕이죠. 외국 사이트들 뿐만 아니라 한글로 쓰여진 페이지들 역시 마찬가지 일 때가 있습니다.

게다가 사실 저는 현재 많은 사이트에서 표준처럼 사용되는 한글 폰트의 크기를 작다고 여기는 사람 중의 하나입니다. 12px (9pt, 0.75em) 이죠. 특히 하드웨어 사양이 점점 좋아짐에 따라 모니터 해상도를 점점 높게 두고 웹서핑을 하게 되니, 시간이 조금 지나면 눈이 아프기도 합니다. 해상도가 높아지면 같은 픽셀 하나의 크기가 줄어들게 되는 거잖아요.

이 글은 외국 사이트에서 깨알 같이 쓰여진 글을 읽다가 문득 생각나서 적는 것입니다. 폰트의 크기가 px이나 pt로 적용된 페이지들은 아무리 CTRL키 + 휠 콤보를 시도해도 글자가 커지질 않아요. ㅠ.ㅠ 그럴 땐 정말 서글퍼지죠. 어디 하소연할 곳도 없고 말이죠.

결론은… '우리 모두 em을 사용하자' 입니다. :)



,

모니터 밝기 체크

2007. 3. 2. 11:39
많은 분들이 아시는 이미지죠. 어떤 근거에서 이렇게 만들어졌는지는 저도 모릅니다. 따라서, 정확하다고도 말할 수가 없어요. 하지만, 실제로 모니터의 밝기를 체크하는데 있어서 어느 정도 효과가 있는 듯 합니다.

모니터 밝기 테스트 #1

이 이미지를 보고 A 부터 Z 까지 전부 다른 밝기로 보이도록 모니터를 설정해야 한다고 하는군요.


모니터 밝기 테스트 #1

이 이미지는 LCD의 경우 보통 7~8 정도 까지 보인다고 하더군요.


역시 다들 아시겠지만 모니터의 명도나 채도 등을 제대로 체크하려면 사실 캘리브레이션 툴 같은 도구를 사용해야 하지요. 워낙 고가의 도구라 전문가들이 아니면 구입하기 어렵지만, 팬톤 (Pantone)의 휴이 (Huey)같은 저가형 캘리브레이션 툴 같은 경우 취미로 사진을 많이 찍거나 이미지 작업을 많이 하시는 분들은 구입하실 수 있는 가격입니다. 요즘엔 보통 9만 9천원 정도 하더군요.



이 제품에 대한 설명은 얼리어답터에 잘 되어 있습니다.

▶ 얼리어답터 - Monitor Color Correction HUEY by PANTONE

,
IE7 이 나왔지만 그네들의 여전한 독자적인 방식 (이라고 쓰고 IE 버그라고 읽습니다) 은 어딜 가지 않는군요. 정확한 레이아웃 표현을 위해 IE6 핵 (hack)에 이어 IE7 핵까지 써야 한다니… 정말 마이크로소프트가 무언가를 새로 내놓을 때마다 무섭습니다.

각설하고, IE7 이야기 하다가 떠오른 팁입니다. 이미 아시는 분은 다 아시고, 모르시는 분은 여전히 모르는 그런 팁이죠;;;

윈도우XP 서비스팩 2를 깐 이후의 IE6와 IE7에서는 액티브엑스와 팝업창이 기본적으로 차단되어 있습니다. 액티브엑스야 대부분의 경우 한번 깔면 되니까 된다고 쳐도, 팝업창은 매번 허용하기에는 찜찜하고 (대부분이 광고니까) 그렇다고 새로고침해서 다시 보려고 하면 프레임이나 스크립트의 사용으로 엉뚱한 곳으로 이동하게 되는 경우가 있어서 불편합니다.

일시적으로 액티브엑스나 팝업창을 허용하고 싶으면 해당 사이트로 갔을 때, 컨트롤키 (CTRL)를 누르고 있으면 됩니다. 액티브엑스나 팝업창을 허용하고 싶은 사이트로 갈 때 아예 컨트롤키를 누른 채로 클릭을 하면 편하겠죠. :)
,