dohoons(도훈) _(≥∇≤)ノミ☆

1 
항상 코딩하기 편리하게 디자인되는 것은 아닙니다.
어떠한 디자인이라도 완벽하게 표현해낼 줄 알아야 정말 실력있는 사람이라 할 수 있겠죠.

이번에 다룰 내용은 라운드 형태의 텍스트필드(이하 Round input) 입니다.

Round input

유동적인 Round input 모델


사실 웹표준의 측면에서 보자면 위와같은 입력폼은
해당 input 의 상위 엘리먼트에 사이즈를 맞춰서 bg 를 깔아줘야 합니다.
하지만 같은 디자인의 입력폼이 자주 사용된다면 다양한 사이즈의 bg를 준비하는 것이 힘들겠죠.

input 을 span 으로 감싸서 bg로 양쪽 라운드를 표현해주는 방법도 있습니다만..
몇가지 문제가 있더군요.

여러가지 측면에서 고민하여 혼자서 결론을 내려봤습니다.
의미없는 라운드 이미지를 input 의 좌우에 배치하는 것입니다.
단, html 코드의 간결함과 추후 유지보수의 편리함을 위해
자바스크립트로 특정 class 가 지정된 input 의 좌우에 이미지를 삽입합니다.

이 방법을 사용하면 inline 엘리먼트의 특성을 유지하며 가로 사이즈가 유동적입니다.
또한 HTML 코드가 매우 간결해지며 스크립트가 동작하지 않는 환경에서도 사용에 지장이 없습니다.

소스코드는 아래와 같습니다.

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Round input</title>
<style type="text/css">
.roundInput { vertical-align:middle; margin:0; padding:3px 0 0 0; height:18px; border:none; background:url('round_input_bg.gif') repeat-x 0 0; }
</style>
<script type="text/javascript">
<!--
window.onload = function () {
    var inputClass = "roundInput"; // 적용할 input의 클래스이름
    var leftImg = "round_input_left.gif"; // 왼쪽 이미지 경로
    var rightImg = "round_input_right.gif"; // 오른쪽 이미지 경로
   
    var roundInput = getElementsByClass(inputClass);
    var roundL = new Array();
    var roundR = new Array();
    for(var i=0; i<roundInput.length; ++i) {
        // 생성
        roundL[i] = document.createElement('img');
        roundR[i] = document.createElement('img');
        roundL[i].setAttribute('src',leftImg);
        roundL[i].setAttribute('alt','');
        roundL[i].style.verticalAlign = 'middle';
        roundR[i].setAttribute('src',rightImg);
        roundR[i].setAttribute('alt','');
        roundR[i].style.verticalAlign = 'middle';
        // 삽입
        roundInput[i].parentNode.insertBefore(roundL[i],roundInput[i]);
        insertAfter(roundR[i],roundInput[i]);
    }
}

function insertAfter(newElement, targetElement) {
    var parent = targetElement.parentNode;
    if(parent.lastChild == targetElement) {
        parent.appendChild(newElement);
    } else {
        parent.insertBefore(newElement, targetElement.nextSibling)
    }
}
function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if ( node == null ) node = document;
    if ( tag == null ) tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}
-->
</script>
</head>

<body>
<input name="textfield" type="text" class="roundInput" />
<input name="textfield" type="text" class="roundInput" />
<input name="textfield" type="text" class="roundInput" />
</body>
</html>

클래스명이 roundInput 인것을 찾아 좌우에 라운드이미지를 삽입해주는 스크립트입니다.
이미지 경로를 수정해서 사용하면 되구요.
위 코드처럼 insertAfter 와 getElementsByClass 함수가 정의된 상태에서 동작합니다.

하루빨리 웹브라우저가 업그레이드 되어 이런 복잡한 방법없이도 편하게 디자인을 구현할 수 있으면 좋겠네요 ^^
Posted by dohoons
웹(Web)/웹표준 l 2008/06/10 01:47

TRACKBACK :: http://dohoons.com/blog/trackback/337

댓글을 달아 주세요

  1. 불량고양  댓글주소  수정/삭제  댓글쓰기

    제 블로그로 담아갑니다 문제될시 자삭하겠으니 알려주시길.
    http://blog.naver.com/eodrn7

    2008/08/26 09:38

Image Replacement(이하 IR) 기법을 사용하면 기존 마크업의 수정없이 CSS조작으로 이미지를 교체하여 내용을 표시할 수 있고, 스크린리더 사용자도 고려할 수 있습니다.

하지만 이미지가 로드되지 않았을때 알아볼 수 없고, 인쇄시 배경이미지 출력 문제가 있습니다.
HTML 마크업 자체는 깔끔해질 수 있으나 접근성 측면에서 이 기법은 권장하지 않습니다.

input 버튼 요소의 IR 기법입니다.
아래 예제는 IE,FF,Oprea,Safari 에서 테스트했습니다.
(이미지는 Daum 의 검색버튼..)

소스코드 펼치기..


소스코드 & 결과


Posted by dohoons
웹(Web)/웹표준 l 2008/06/10 01:18

TRACKBACK :: http://dohoons.com/blog/trackback/336

댓글을 달아 주세요

사용자 삽입 이미지

CSS Design Korea 에서 이번에 웹표준 경진대회를 주최합니다.

누군가가 시켜서 만드는 웹, 누구를 위해 만드는 것인지 알 수 없었던 웹은 이제 우리 자신과 보다 많은 사람들을 위해 개선되어 나가야 합니다. 더 많은 사람들이 더 좋은 방법을 이용하여 웹 사이트를 제작하고 사용할 수 있어야 하고, 시대가 이런 점을 이미 요구하기 시작했습니다. 이제는 가르치고 배우는 과정을 넘어 더 많은 사람이 보다 손 쉽게 이용할 수 있는 웹 표준으로 나아가야 할 것입니다. '규칙과 창조의 만남'이라는 슬로건처럼 웹 표준이라는 규칙을 지킴으로써 사이트가 얼마나 창조적으로 유연하게, 얼마나 더 편리해질 수 있는지를 많은 사람들이 알 수 있게 될 것입니다.

CSS Design Korea에서 주최하고, Hosting.kr, 에이콘출판사, 디지털미디어리서치가 후원하는 이번 대회는 2008년 5 월 1일부터 약 한달간 진행되며 2008년 6월 예정인 세번째 웹 표준의 날에 그 대미를 볼 수 있게 됩니다. 우리가 원하는, 모두를 위한 웹을 만들어가려는 이번 행사에 많은 분들의 참여를 기대합니다.

대회 상세정보 페이지 : http://award.standardmag.org/detail_info.html

재밌겠네요.
시간되면 저도 해보고 싶습니다. (괜찮은 아이디어가 떠오르면..)
Posted by dohoons
웹(Web)/웹표준 l 2008/05/05 01:18

TRACKBACK :: http://dohoons.com/blog/trackback/328

댓글을 달아 주세요

  1. M.SON  댓글주소  수정/삭제  댓글쓰기

    아직도 의미있는 마크업 하는 것도 어려워 죽겠어요
    CSS 씌우는건 완전 안드로메다 ㅠㅠ

    2008/05/21 00:20
    • dohoons  댓글주소  수정/삭제

      시맨틱마크업. 컨텐츠를 논리적으로 구조화시키는게 제일 머리 아프지..

      2008/05/22 22:31

실전 웹표준 가이드 (KIPA)
강력 추천하는 문서입니다. 정독하세요~

Posted by dohoons
웹(Web)/웹표준 l 2008/04/29 14:24

TRACKBACK :: http://dohoons.com/blog/trackback/327

댓글을 달아 주세요

마이크로소프트가 상호 운용성 확보 약속이 진짜임을 강조하고 있다. MS는 IE8이 웹 표준 기술에 대응할 수 있도록 계획을 전환한다고 3일(미국시간) 밝혔다.

[ZDNet Korea 기사 보기]


다 좋은데 랜더링모드 선택을 위한 IE 만의 코드가 또 생겼지요.
기존 사이트는 IE8 에서 깨질경우 간단한 메타코드만 추가하면 된답니다.
매우 저질스런 상황입니다.

하지만 이정도로 IE의 개념이 바뀔줄은 몰랐습니다. 이것으로 IE의 이용자가 늘어날지 줄어들지..기대가 되네요. IE8 이 어서 나오고 IE6 이 거의 사라지는 날이 빨리 좀 왔으면 싶습니다.

대부분의 브라우저가 웹표준 준수에 근접하면서 웹퍼블리셔의 입지는 좀더 확고해질 것 입니다. 그러나 장기적인 전망이 있어보이진 않습니다. 그렇다고 안할것도 아니지요. 필수과목이죠.

더불어 CSS3 도 제발 빨리좀 보편화 되었으면 합니다.
CSS2 규격만으로는 10% 부족하거든요.


Posted by dohoons
웹(Web)/웹표준 l 2008/03/06 00:26

TRACKBACK :: http://dohoons.com/blog/trackback/320

댓글을 달아 주세요

  1. ogoons  댓글주소  수정/삭제  댓글쓰기

    횽 나는 컴이 고물이라 ie6 아니면 안되는 걸..

    2008/03/06 20:08
  2. 미유  댓글주소  수정/삭제  댓글쓰기

    엄청난 웹표준을 지원하더라구요.... 웹표준 테스트에 완벽히 통과하는 희안한..ㅡ,.ㅡ;
    7 나온지가 얼마안된거같은 느낌이 들었는데 8이 나와서 당황스럽습니다 ㅋㅋ

    2008/03/13 16:55
  3. 순남이  댓글주소  수정/삭제  댓글쓰기

    우리 컴퓨터님이 버텨주시려나...
    말년이라 힘드실텐데;;

    2008/03/19 22:56

웹표준을 공부할 수 있는 서적들을 소개합니다.

아래 목록중에는 제가 본 것, 보고 있는 것, 볼 것이 모두 포함되어있지요 -_-
책 정보는 클릭하시면 모두 yes24로 넘어갑니다.

모두 어려운 내용들은 아니기 때문에 재밌게 읽을 수 있을 것입니다.


실용예제로 배우는 웹 표준


웹 2.0을 이끄는 방탄웹

CSS 마스터 전략

Head First HTML with CSS & XHTML : 웹2.0 시대의 웹 표준 학습법

제프리 젤드만의 웹표준 가이드

웹표준 교과서

웹디자인 2.0 고급 CSS


DOM 스크립트 : 다이내믹한 웹 표준 사이트를 위한
Posted by dohoons
웹(Web)/웹표준 l 2008/02/20 16:07

TRACKBACK :: http://dohoons.com/blog/trackback/316

댓글을 달아 주세요

  1. 미유  댓글주소  수정/삭제  댓글쓰기

    웹표준이 대세! ㅋㅋ 저도 웹표준에 맞는 사이트 제작을 위해 많이 노력하겠어염

    2008/02/24 13:01

기존에 일명 '테이블 코딩', '막코딩' 을 할때는 그다지 문제가 되지 않던게 웹표준 코딩을 하려고 할때는 난감한 경우가 있습니다.

그 중 하나가 바로 가운데정렬이지요.


이미지와 함께 설명을 하면 이해가 빠르겠지만 편의상 이 포스트에서는 온리 텍스트로 갑니다.
(죄송합니다 귀찮아서.. 아마 여러분이라면 이런 내용이라도 충분히 이해하시겠죠)


우선 테이블로 레이아웃을 잡던 시절의 방법을 보겠습니다.
<table align="center">
    <tr>
       <td height="100" valign="middle">test</td>
    </tr>
</table>

위와 같이 하면 test 라는 글자를 감싸는 테이블은 가운데정렬이 됩니다.
그리고 테이블의 셀높이를 100px 로 줬는데 valign="middle" 이므로 test 글자는 세로로 가운데로 정렬됩니다. (valign="middle"은 기입하지 않아도 기본값입니다)
아주 간단하지요.

하지만 테이블을 레이아웃 구성에 사용하는 것은 좋지 않습니다.
데이터를 표현하라는 원래 목적에 맞지 않으며, 복잡해지면 유지보수도 어려워져요.
(그런데 저를 포함해서 우리나라 대다수의 디자이너&개발자 분들은 이게 편하죠?)


그럼 이제 아래의 소스를 보시겠습니다.
<ul>
    <li>제목1</li>
    <li>제목2</li>
</ul>

리스트 하나를 마크업했습니다. 이것을 가운데로 정렬하고자 합니다.
글자를 가운데정렬이 아니라 ul 자체를 그것을 감싸고 있는 무언가에 대해서 가운데에 위치시켜야만 합니다.

블록엘리먼트를 가로로 가운데정렬을 하는데 조건이 있습니다.
width 가 반드시 지정되어 있어야 합니다.

<style type="text/css">
ul { width:400px; margin:0 auto; }
</style>
<ul>
    <li>사과</li>
    <li>오렌지</li>
</ul>

이렇게 스타일에서 width 를 400px 로 고정하면 margin:0 auto; 로 양쪽 마진을 자동으로 잡게 해서 가운데정렬이 가능합니다.

그런데 만약 위의 리스트의 내용이 가로길이가 유동적이라 ul 의 width를 고정할 수 없다면?
이게 문제입니다. 현재 웹 현실로는 css만으로는 무리입니다.
javascript 로 그때그때 가로길이를 불러와서 width를 유동적으로 지정한다면 가능할 수도 있을 것이라 생각합니다만 그렇게 까지 해야하나요?

이 경우에는 꼭 width 가 유동적이어야만 하는지 다시 생각해보고
혹시 마크업을 다르게 하면 고정 width 로도 가능한 표현이 아닌지 생각해봐야 합니다.
물론 여기서 그 모양을 구현하기 위해 불필요한 마크업을 하는 것도 자제해야 합니다.


이렇게 가로로 가운데정렬하는 것은 제약이 따릅니다.
그러면 세로 가운데정렬은 어떨까요?
<div class="wrap">
    <div class="content">가운데 정렬 되고 싶어요</div>
</div>

위와 같은 마크업이 존재하고 wrap 은 세로길이가 400px 이라고 가정합니다.

만약 content 의 height 가 100px 이라고 가정을 한다면
.content { height:100px; margin:150px 0; }
이렇게 위아래에 150px 씩 마진을 주어 가운데 위치시킬 수 있겟죠.
content 의 세로가 100px 이니 그 안의 텍스트는 상단 정렬 될 수 밖에 없습니다.
이 역시 적절히 padding 을 조절하는 방법 말고는 없습니다.


조금 문제가 있는 방법이지만 또 다른 방법도 소개합니다.
홈페이지를 미니홈피형식의 조그만 사각형으로 구성했다고 가정합니다.
이것을 브라우저의 크기에 상관없이 가로, 세로 가운데에 위치시켜야 보기에 이쁘겠죠.
다행히 가로세로 길이를 모두 알고 있습니다.

<style type="text/css">
body { height:100%; }
.main { width:400px; height:300px; position:absolute; top:50%; left:50%; margin-top:-150px; margin-left:-200px; }
</style>

<body>
<div class="main">test</div>
</body>

이해가 되시나요? 설명을 하겠습니다.

우선 main div 를 감싸고 있는 body 의 세로길이를 100% 로 지정을 해놨습니다. 브라우저 크기 상관없이 100% 를 유지하도록 말이죠.

그리고 main 을 position:absolute; 로 띄웠구요.
top:50%; left:50%; 을 적용함으로써 body 의 중간부분에 위치합니다.
여기서 main 에 위쪽과 왼쪽 마진을 main 자체의 가로,세로길이의 절반을 음수로 넣어줌으로써 정말 가운데에 위치하게 됩니다.
응용하면 여러가지 상황에 사용할 수도 있겠으나 위와 같은 예제에서는 문제점도 있습니다.
브라우저를 작게 조절하셔서 보시면 아시겠지만 스크롤바를 움직여도 모든 내용을 볼수 없게 가려집니다 (...)



이렇게 제약사항이 있습니다만 생각을 조금만 바꾸면 해결되는 부분도 많습니다.
기존의 레이아웃을 생각하던 버릇 때문에 더욱 난감해질 수 있습니다.
실제로 이 문제가 치명적으로 다가오는 경우는 드물거든요.
정 안된다면 아주아주 가끔 정도는 테이블을 이용하여 가운데 정렬을 하셔도 크게 문제는 없습니다만 "의미에 맞는 마크업! 데이터와 표현의 분리!" 를 위해선 좋지 않겠지요.




저의 블로그에서 이렇게 지루한 장문의 글을 읽으시는 분이 과연 몇분일지 모르겠습니다 ㅋㅋ;
중간중간 그림이라도 넣었으면 덜 지루했을텐데 -_-....
Posted by dohoons
웹(Web)/웹표준 l 2008/02/20 01:10

TRACKBACK :: http://dohoons.com/blog/trackback/315

  1. Subject: 왜 웹표준인가?

    Tracked from 쏭군은 열정 드리머  삭제

    여러분 가게에 물건 구경하겠다는 손님을 그냥 내쫓겠습니까?손님이 시각장애인이라는 이유로 물건을 팔지 않겠습니까?웹표준을 지키지 않으면 알게 모르게 놓치는 것들이 많습니다!웹표준?..

    2008/03/01 14:14

댓글을 달아 주세요

  1. hkimscil  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.

    .center {
    margin-left: auto;
    margin-right: auto;
    }

    <ul class="center">
    <li> . . . . </li>
    </ul>

    이렇게 해도 문제가 되던가요?

    2008/02/20 02:08
    • dohoons  댓글주소  수정/삭제

      글 내용에 있다시피
      width 가 지정되어있어야 한다는 조건이 있습니다~
      그것이 충족되면 됩니다.

      2008/02/20 10:13
  2. 꼬세  댓글주소  수정/삭제  댓글쓰기

    윗분이 말하려고 했던걸 미리 말씀하셨군요..
    테이블을 사용하지 말라가 아니라..테이블사용할때를 정확히 알라고 하는게 웹표준 입니다. 무조건 적인 테이블 사용 회피는 마크업에도 전혀 들어 맞질 않는다고 보는게 옳습니다. 가운데 정렬을 위해서 테이블을 사용하는것 자체가 더 복잡한건 사실입니다. 주제넘는 댓글 같네요^^ 글 잘읽고 갑니다.행복한 하루 보내세요~~

    2008/02/20 02:41
    • dohoons  댓글주소  수정/삭제

      맞습니다.
      테이블은 필요할때만 사용해야지요.
      레이아웃을 위한 필요가 아니라 의미적으로 필요할때 말입니다.

      2008/02/20 09:58
  3. 스파  댓글주소  수정/삭제  댓글쓰기

    .center {
    margin-left: auto;
    margin-right: auto;
    }
    는 적어도 파폭에서는 적용되지 않는군요. 전 이렇게 표현합니다.
    .center {
    margin-left: 30%;
    margin-right: 30%;
    }
    "30%"는 적당하게 넓이에 맞게 조정하면 되겠죠.

    2008/02/20 02:52
    • dohoons  댓글주소  수정/삭제

      블록엘리먼트에 width 가 없으면 100% 로 잡히니까요.
      margin-left: auto;
      margin-right: auto;
      로 하셔도 width 를 지정하면 정상적으로 됩니다~

      2008/02/20 10:02
  4. 나인테일  댓글주소  수정/삭제  댓글쓰기

    편리한 <center>태그를 버리니 일이 이렇게 복잡해지는군요...(....)

    2008/02/20 04:22
    • dohoons  댓글주소  수정/삭제

      아..center 태그가 있었지요..
      이제는 정말 가까이해선 안되는 친구입니다.

      2008/02/20 10:02
  5. 인게이지  댓글주소  수정/삭제  댓글쓰기

    간단 명료가 표준이 가져야할 조건중 하나이거늘
    가운데 정렬 문제만 만나면 골아픔...ㅡ.ㅡ

    2008/02/20 06:02
  6. 쟈스틴  댓글주소  수정/삭제  댓글쓰기

    [ul style="text-align: center;"]
    [li]ABC[/li]
    [/ul]

    해보셨나요? 블록 엘리먼트에서 하위 엘리먼트들의 텍스트를 정렬하는 것은 text-align 속성입니다.

    블록 엘리먼트는 당연히 width 속성이 없으면 100%가 디폴트니까 가운데 정렬이고 자시고 할 게 없지요. 폭을 적당히 좁혀놔야 margin: 0px auto; 옵션이 먹히는게 아니겠습니까?

    또한, 위에 드신 테이블의 예와 UL의 예는 경우가 다르다고 봅니다. 예로 드신 테이블의 가운데 정렬은 테이블 내의 텍스트가 대상이니 text-align: center; 옵션을 주시면 되겠구요, 마찬가지로 UL 태그 안의 텍스트만 정렬하실 거라면 text-align: center; 옵션만 추가하시면 됩니다. 만약 테이블 또는 UL 엘리먼트 자체를 가운데 정렬하시려면 당연히 width 옵션을 주셔야겠지요.

    2008/02/20 06:55
    • dohoons  댓글주소  수정/삭제

      테이블의 예에서
      가로 가운데 정렬은 테이블 자체의 가운데정렬입니다.
      table 에 align="center" 를 주면 width 를 지정하지 않아도 가운데로 정렬이 되지요.

      말씀하신대로 text-align: center; 를 적용하면
      테이블 안의 인라인 엘리먼트가 테이블에 대해서 가운데로 정렬될 것입니다.

      또한 기존에 테이블로 레이아웃을 잡을때 편했던 것을 설명하고자
      테이블안의 텍스트를 세로로 가운데 위치하게 하는 것도 같이 예로 들었습니당~

      텍스트만 빡빡한 글을 다 읽어주셨네요. 댓글 감사합니다 ( __)

      2008/02/20 10:06
  7. idea  댓글주소  수정/삭제  댓글쓰기

    페이지 전체를 가운데로 정렬하는 것을 위해 TD, TR이 각각 1개씩 들어가는 테이블을 쓰면.. 웹표준에 부합되지 않는 건가요?

    사실.. 패딩이나 마진에 대한 브라우저의 정책이 달라서인지 .. CSS로만 레이아웃을 짜기도 만만치 않은거 같더라구요..

    <body>
    <table align=center width=100%><tr><td>
    전체내용
    </td></tr></table>
    </body>

    2008/02/20 09:43
    • dohoons  댓글주소  수정/삭제

      유효성검사를 통과할 수는 있습니다.
      하지만 의미에 맞게 마크업했다고 볼 수 없겠지요.

      그리고 표현을 위해 마크업이 추가되었기 때문에
      디자인 관리를 css 에서 총괄하지 못할 것입니다.

      2008/02/20 10:11
  8. 점프컷  댓글주소  수정/삭제  댓글쓰기

    좋은글 잘 읽었습니다. 어짜피 웹개발자들만 이해할 수 있는 내용이기에 그림이 없어도 충분히 좋습니다.^^

    2008/02/20 12:16
  9. A2  댓글주소  수정/삭제  댓글쓰기

    위에 강조된 "의미에 맞는 마크업! 데이터와 표현의 분리!"
    이게 정말 중요한거죠. ^^)b

    2008/02/20 13:10
  10. META-MAN  댓글주소  수정/삭제  댓글쓰기

    위의 여러분들이 말씀하셧지만, 가장 쉬운건

    style="text-align:center;margin:auto"

    말씀하신 테이블의 경우에는
    <table align="center" style="margin:auto"></table>
    이렇게 하면 크기를 정하지 않아도 가운데로 쏘옥 들어오게 됩니다. XHTML기준으로...

    2008/02/20 13:12
    • dohoons  댓글주소  수정/삭제

      text-align:center; 는 인라인 엘리먼트만 적용된다는 것에 주의해야합니당~

      2008/02/20 14:24
    • META-MAN  댓글주소  수정/삭제

      <table align="center" style="margin:auto"></table>

      이 부분은 테이블 자체 정렬이 되는데요....

      2008/02/20 14:34
    • dohoons  댓글주소  수정/삭제

      <table align="center"></table>
      일단 style="margin:auto" 는 불필요해서 뺐습니다.
      align="center" 만 사용하면 테이블 자체가 가운데 정렬이 되지요.

      하지만 말슴하신것중 text-align:center; 는 table align="center" 와는 다른 개념이니까요.

      td align="center" 일 때는 비슷하게 적용되지만
      text-align:center; 의 경우엔 내부의 인라인 엘리먼트에만 center 정렬이 적용된다는 차이가 있죠.

      하지만 align="center" 도 결국엔 표현을 위한 마크업이니 사용하기가 조금 거시기하네요 ㅎ;

      2008/02/20 14:54
    • META-MAN  댓글주소  수정/삭제

      무슨말씀 하시는 줄 알겠는데요, margin auto를 적용 안하면, 가운데 정렬 안됩니다. XHTML에서는요.
      물론 HTML에서는 됩니다.

      마크업 버젼에 따라서 다 될려면 XHTML을 따라야 할거 같습니다.

      2008/02/20 15:16
    • dohoons  댓글주소  수정/삭제

      제가 계속 토를 달아서 죄송합니다만 ㅠㅡ;
      XHTML 에서도 테이블은 align="center" 만으로도 가운데 정렬이 됩니다.
      여러가지 브라우저에서 테스트를 했던 것이구요.

      테이블이 아닐경우에는 좌우 마진을 auto 로 해야 가운데 정렬이 되지요.
      이때는 물론 width 가 반드시 지정되있어야만 합니다.

      2008/02/20 15:42
  11. META-MAN  댓글주소  수정/삭제  댓글쓰기

    하나 덧붙여서 "의미에 맞는 마크업! 데이터와 표현의 분리!"적으로 본다면,

    <table>태그는 필시 <thead>그리고 <tbody>태그로 상속관계를 명확히 해줘야 합니다.
    FF에서는 아직 문제가 없지만,IE계열에서는 테이블 스트럭쳐의 상속관계가 불분명하면 DOM 접근시 에러 뜹니다......Permission Error였던거 같아요.

    2008/02/20 13:21

한국형 웹 콘텐츠 접근성 지침(KWCAG) 1.0
Korean Web Contents Accessibility Guideline 1.0

지침1. 인식의 용이성 - 웹사이트에서 서비스하고 있는 모든 콘텐츠는 누구나 쉽게 인식할 수 있도록 설계되어야 한다.
항목1.1 (텍스트 아닌 콘텐츠(non-text contents)의 인식) 텍스트 아닌 콘텐츠 중에서 글로 표현될 수 있는 모든 콘텐츠는 해당콘텐츠가 가지는 의미나 기능을 동일하게 갖추고 있는 텍스트로도 표시되어야 한다.
항목1.2 (영상매체의 인식) 시간에 따라 변화하는 영상매체는 해당 콘텐츠와 동기되는 대체 매체를 제공해야 한다.
항목1.3 (색상에 무관한 인식) 콘텐츠가 제공하는 모든 정보는 색상을 배제하더라도 인지할 수 있도록 구성되어야 한다.

지침2. 운용의 용이성 - 웹 콘텐츠에 포함된 모든 요소들의 기능은 누구나 쉽게 사용할 수 있어야 한다.
항목2.1 (이미지 맵 기법 사용 제한) 이미지 맵 기법이 필요할 경우에는 클라이언트측 이미지 맵을 사용하여 서버측 이미지 맵을 사용할 경우에는 동일한 기능을 하는 텍스트로 구성된 대체 콘텐츠를 제공해야 한다.
항목2.2 (프레임의 사용 제한) 콘텐츠를 구성하는 프레임의 수는 최소한으로 하여, 프레임을 사용할 경우에는 프레임별로 제목을 붙여야 한다.
항목2.3 (깜박거리는 객체 사용 제한) 콘텐츠는 스크린의 깜빡거림을 피할 수 있도록 구성되어야 한다.
항목2.4 (키보드로만 운용 가능) 키보드 (또는 키보드 인터페이스)만으로도 웹 콘텐츠가 제공하는 모든 기능을 수행할 수 있어야 한다.
항목2.5 (반복 내비게이션 링크(repetitive navigation link)) 웹 콘텐츠는 반복적인 네비게이션 링크를 뛰어넘어 페이지의 핵심부분으로 직접 이동할 수 있도록 구성하여야 한다.
항목2.6 (반응시간의 조절기능) 실시간 이벤트나 제한된 시간에 수행하여야 하는 활동 등은 사용자가 시간에 구애 받지 않고 읽거나, 상호작용을 하거나 응답할 수 있어야 한다.

지침3. 이해의 용이성 - 사용자들이 가능한 한 쉽게 이해할 수 있도록 콘텐츠나 제어 방식을 구성해야 한다.
항목3.1 (데이터 테이블 구성) 데이터 테이블은 테이블을 구성하는 데이터 셀의 내용에 대한 정보가 충분히 전달될 수 있어야 한다.
항목3.2 (논리적 구성) 콘텐츠의 모양이나 배치는 논리적으로 이해하기 쉽게 구성하여야 한다.
항목3.3 (온라인 서식 구성) 온라인 서식을 포함하는 콘텐츠는 서식 작성에 필요한 정보, 서식 구성 요소, 필요한 기능, 작성 후 제출 과정 등 서식과 관련한 모든 정보를 제공해야 한다.

지침4. 기술적 진보성 - 구성한 콘텐츠는 웹 브라우저의 종류, 버전 등에 관계없이 사용될 수 있어야 한다.
항목4.1 (신기술의 사용) 스크립트, 애플릿 또는 플러그 인(plug-in) 등과 같은 프로그래밍 요소들은 현재의 보조기술의 수준에서 이들 프로그래밍 요소들의 내용을 사용자에게 전달해줄 수 있을 경우에만 사용하여야 한다.
항목4.2 (별도 웹사이트 제공) 콘텐츠가 항목 1.1에서 4.1에 이르는 13개 검사 항목을 만족하도록 최대한 노력하였으나 해결되지 않는 부분이 남아있다면 텍스트만의 콘텐츠를 제공하는 웹 페이지(또는 웹사이트)를 별도로 제공해야 한다.



W3C 웹 콘텐츠 접근성 지침(WCAG) 1.0
Web Contents Accessibility Guideline 1.0

지침1. 콘텐츠의 시각적, 청각적 요소에 대하여 동일한 내용의 대체수단을 제공하라.
항목1.1 모든 비 텍스트 요소에 대하여 대체 텍스트를 제공하라.
항목1.2 서버측 이미지 맵의 활성화 영역에 대하여 부가적인 텍스트 링크를 제공하라.
항목1.3 멀티미디어의 시각적 요소에 대한 대체 텍스트를 사용자 도구(웹 브라우저, 스크린리더 등 사용자가 웹 서비스를 이용하기 위한 도구)가 자동으로 읽을 수 없다면, 이 내용의 중요한 정보를 음성으로 제공하라.
항목1.4 시간에 따라 내용이 변하는 멀티미디어와 이에 대한 대체 텍스트는 그 내용을 동기화시켜야 한다.
항목1.5 사용자 도구가 클라이언트측 이미지 맵의 각 활성화 영역 및 링크정보에 대하여 대체 텍스트를 인식하여 처리할 수 없다면, 동일한 내용에 대하여 부가적인 텍스트 링크를 제공하라.

지침2. 색상만을 이용하여 정보를 전달해선 안된다.
항목2.1 색상을 통해 전달하는 모든 정보는 색상 없이도 전달될 수 있어야 한다.
항목2.2 색맹, 색약인 사람이나, 흑백 모니터를 통해 보는 사람들도 정보전달 시 문제가 없도록 전경색과 배경색은    충분한 명암 대비를 가져야 한다.

지침3. 마크업과 스타일시트를 사용하되 적합하게 사용하라.
항목3.1 적절한 마크업 언어가 존재한다면 정보를 전달하기 위해 이미지보다 마크업을 사용하라.
항목3.2 공식 문법에 맞도록 문서를 작성하라.
항목3.3 시각적 요소를 컨트롤하기 위해서는 스타일시트를 사용하라.
항목3.4 마크업 언어 및 스타일시트의 속성값 부여시 절대단위보다는 상대단위를 사용하라.
항목3.5 문서의 구조를 전달하기 위해 헤더요소를 사용하되 정해진 방법에 맞게 사용한다.
항목3.6 리스트 및 리스트 요소 마크업들을 적합하게 사용하라.
항목3.7 인용 마크업을 사용하되 들여쓰기 효과 등을 위해 사용하지 않는다.

지침4. 사용언어를 명시하라.
항목4.1 문서의 텍스트 및 대체 텍스트의 언어의 변화에 대해 분명히 명시하라.
항목4.2 문서에서 약자, 약어 등이 쓰일 경우, 해당 약어가 처음 나타났을 때 이에 대한 전체 내용을 명시하라.
항목4.3 문서의 기본언어를 지정하라.

지침5. 호환성을 지니도록 테이블을 작성하라.
항목5.1 데이터 테이블에 있어 행과 열에 대한 헤더를 구분하라.
항목5.2 행 또는 열에 대하여 두 단계 이상의 논리적 헤더를 갖는 데이터 테이블은 데이터 셀들과 헤더 셀들을 연결시킬 수 있는 마크업을 사용하라.
항목5.3 레이아웃 테이블을 이용한 정보를 선형화시켰을 때 해당 내용이 제대로 전달되지 않는다면 레이아웃 테이블을 사용하지 않는다. 꼭 사용해야 한다면 해당 내용에 대한 대체 정보를 제공하라.
항목5.4 테이블이 레이아웃을 위해 사용되었다면, 이 테이블 작성 시 시각요소 컨트롤을 위해 문서의 구조에 관한 마크업을 사용하지 말아라.
항목5.5 테이블에 대한 요약정보를 제공하라.
항목5.6 헤더 레이블에 대한 요약을 제공하라.

지침6. 신기술을 사용한 페이지는 해당 내용에 대해 호환성을 확보해야 한다.
항목6.1 스타일시트를 사용하지 않아도 읽을 수 있도록 문서를 구성하라.
항목6.2 동적 콘텐츠에 변화가 있을 경우에는 해당 내용에 대한 대체 콘텐츠도 갱신시켜야 한다.
항목6.3 스크립트, 애플릿, 또는 다른 프로그램 객체들이 사용 중지되어 있거나 지원되지 않아도 페이지가 사용 가능해야 한다. 이것이 불가능할 경우에는 별도의 접근가능한 페이지를 통해 정보를 제공해야 한다.
Posted by dohoons
웹(Web)/웹표준 l 2008/02/17 19:02

TRACKBACK :: http://dohoons.com/blog/trackback/313

댓글을 달아 주세요

다음이 개편을 했습니다.
정확히 언제한지는 모르겠습니다-_-
하루에 두세번 정도 들어가긴 하는데..

대충 리뷰를 해보겠습니다.
디자인이나 편의성은 아직까지 잘 모르겠습니다.
개편을 했으니 전보다 나아졌겠죠. (완전 무책임)

저는 특별히 웹표준이라는 측면에서 접근을 해보겠습니다.
우선 html 유효성 검사 결과입니다.

사용자 삽입 이미지
흠 잡을 데가 없습니다. 검사기의 결과로는 완벽하다는군요.

하지만 단순히 코드가 유효하냐 아니냐라는 검사 결과일뿐입니다.
저것을 통과한다고 해서 웹표준을 준수했다고 할 수 없으며 기본적으로 크로스브라우징이 제대로 되었는지도 확인할 수 없습니다.

중요한점은 각 엘리먼트를 원래 만들어진 목적에 맞게. 의미있게 사용해야 한다는 것이지요.
처음부터 끝까지 div 만 사용해도 유효성 검사는 통과할 수 있습니다.
하지만 그런페이지는 의미적으로 어떤게 내용이고 어떤게 제목인지 파악할 수 없죠.

새롭게 바뀐 다음의 css 를 걷어내고 살펴보겠습니다.

사용자 삽입 이미지
인기 검색어에 사용된 스크립트 때문에 약간 이상한 부분도