기술정보2010. 9. 10. 15:20


디자이너와 친해지기? 위한 자료...ㅡㅡ;

UI설계시 개발자도 한몫을 해야 하니... 알아 두면 좋을 듯... 우리 이제 클라가 화면 막 바꿔 달라고 하면 이런 과정을 거쳤으니 안된다 라고 해보자....
Posted by Jake Kim
HTML/CSS2010. 8. 19. 09:32

DIV태그에 text-align:center속성을 주고 TABLE태그를 둘 경우 IE에선 가운데 정렬이 되는데 FF(또는 dtd에 따른 IE8)에선 왜 안되냐 라고 물어 보는 분들이 있어 블러그에 올려 둡니다.

TABLE태그는 기본적으로  Block-level 엘리먼트로 정의 되어 있습니다.(http://htmlhelp.com/reference/html40/block.html)
따라서 이런 Block-Level 엘리먼트는 text-align:center로 중앙 정렬을 할 수 없습니다. 원칙적으로는 말이죠.


일단 이미지를 통해 내용을 확인하겠습니다.

<div style="border:1px solid red; text-align:center">
    <table width="200" border="1" cellspacing="0" cellpadding="0">
        <tr>
            <td>&nbsp;</td>
        </tr>
    </table>
    <br>
    <table width="200" border="1" cellspacing="0" cellpadding="0">
        <tr>
            <td>&nbsp;</td>
        </tr>
    </table>
    <br>
    <table width="200" border="1" cellspacing="0" cellpadding="0">
        <tr>
            <td>&nbsp;</td>
        </tr>
    </table>
</div>

이렇게 간단히 코딩을 하고 위와 같은 이미지를 기대 하셨을 겁니다. 그런데 이게 브라우저 또는 dtd에 따라서 다른 모양을 나타 낼겁니다.
혹시 에디트플러스를 켜놓고 html에 위의 내용을 작성 하셨다면 dtd문제로 브라우저 마다 다른 화면을 보게 될겁니다.

그 이유는 에디트플러스에서 제공하는 기본적인 dtd <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">는 dtd가 아닙니다. 순수하게 문법오류만을 잡아낼뿐 dtd에 대한 내용이 없습니다. 뿐만아니라 HTML 4.0입니다. 이미 HTML이 4.1로 바뀐마당에 서언문 자체도 문제가 있죠. 아무튼 이건 기본적인 dtd일뿐입니다.


따라서 만약 DIV안의 TABLE을 중앙 정렬을 시켜야 한다면 아래와 같이 하셔야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<div style="border:1px solid red;">
    <table width="200" border="1" cellspacing="0" cellpadding="0" style="margin-left:0px; margin-right:auto">
        <tr>
            <td>왼쪽</td>
        </tr>
    </table>
    <br />
    <table width="200" border="1" cellspacing="0" cellpadding="0" style="margin-left:auto; margin-right:auto">
        <tr>
            <td>중앙</td>
        </tr>
    </table>
    <br />
     <table width="200" border="1" cellspacing="0" cellpadding="0" style="margin-left:auto; margin-right:0px">
        <tr>
            <td>오른쪽</td>
        </tr>
    </table>
<div>
</body>
<html>

위와 같이 하는게 정상적인 방법인데, 만약 quirks모드로 화면을 구동 시킨다면 IE8이건 IE6이건 단순히 DIV에 text-align:center만 놓아도 됩니다.

사실 IE6이 문제라기 보단 IE가 가진 기본적인 quirks모드에 따라 화면이 달라 보이는 겁니다.
즉 위의 소스에서 보이는 DTD를 STRIC모드로 하였을 경우 TABLE에 style="margin-left:auto; margin-right:auto"(또는 margin:0px auto)속성을 줘야 합니다.


위의 속성으로 화면을 보게 되면 아래와 같이 나옵니다.


사실 이런 불편한 관계를 피하기 위해서는 기본적으로 DTD선언에 맞춰 화면을 개발 해야 하며, 기본적으로 엘리먼트의 속성을 파악 해줘야 합니다.
Posted by Jake Kim
기술정보2010. 8. 11. 10:20

이런거 하나쯤 있었으면 했는데 역시나 있군요.
출력하거나 바탕화면에 설정 해 놓고 보면 괜찮을 듯 합니다.

출처 사이트에 가시면 아래 이미지 외에도 다른 이미지도 구할 수 있습니다.









Posted by Jake Kim