표준은 어디에나 존재한다. but…

nmind님의 언급처럼 표준이라는 것은 기술적인 것 보다는 약간은 정치적인 면이 있습니다. 시장이 커지면 보통 미국에서부터 표준화 작업이 이루어 집니다. 비영리 단체에서 그러한 일을 하고 있으며, 웹에서는 보통 W3C에서 관련 표준화 작업을 진행합니다.

마이크로소프트에서 만드는 OS도 표준이 존재하고, 비쥬얼 스튜디오에서 지원하는 언어들도 표준이 존재합니다. 심지어는 종교도 표준이 존재합니다.

일반적으로 표준은 처음엔 많이 쓰이는 부분을 묶는 것부터 시작하고, 시간이 지나면 선도적인 권고를 내놓습니다. 지금은 쓰이지 않아도 이렇게 하면 모든 이에게 이롭다는 식입니다. W3C에서 현재의 표준으로 삼는 XHTML1.1+CSS2.0이 과연 모든 이에게 이로울까요?

CSS 레이아웃의 표준

CSS 레이아웃을 만드는 것에 가장 불리한 점은 “쉽지 않다”라는 점입니다. 무슨 이야기냐 하면 W3C에서 제공하는 레퍼런스만을 보고 디자인을 할 수가 없습니다. 즉, 브라우져에 띄우기 전까지는 어떻게 나올지 알 수 없다는 이야기입니다.

즉, 테이블 레이아웃을 적용할 때에는 IE, FireFox, Safari 등의 태그 레퍼런스를 참고하지 않아도 디자인이 가능합니다. 그 이유는 테이블이라고 하는 것은 웹이 처음 생길 때 부터 존재했던 것이기 때문이죠. 하지만, CSS는 여러가지 브라우져가 나온 이후에 생긴 것으로 브라우져마다 적용 방법이 약간씩 틀립니다.

우리는 왜 브라우져 핵을 사용해야 하는가?

저도 과거에 CSS만으로 웹페이지를 구성한 적이 있습니다. 코드와 디자인의 분리는 만드는 입장에서는 꽤나 매력적인 것이 사실입니다. 즉, 코드는 DIV로 쌓여져서 그 자체로 데이터만 넣고, 디자인은 style.css 등의 파일 안에 넣습니다. 디자인을 고칠때에는 style.css파일만 수정합니다. 정말 매력적입니다.

하지만, 오래 지나지 않아서 브라우져 별로 CSS를 적용하는 것이 쉽지 않다는 것을 알게 되었습니다. 그리고, 전혀 불필요하지만 CSS만으로 디자인 할 때 필요한 것, 즉 브라우져 핵을 써야한다는 사실도 알았습니다. 브라우져들이 CSS를 적용을 달리하는데 우리는 한개의 CSS로 둘 다 제대로 나오게 해야 합니다. 프로그래머의 경우는 보통 동일 API를 사용할 수 있는 라이브러리를 만들어서 코딩을 하는데, 하나의 프로그램 코드가 유닉스던 리눅스던 윈도우던 동일한 출력을 보장하게 하는 가장 편한 방법입니다. Google이 Picasa 리눅스 버젼을 만든 방법이 이것입니다.

하지만, CSS는 단순한 상속의 개념은 있지만, 클래스처럼 그것을 자유롭게 활용하기가 구조적으로 불가능합니다. CSS 3.0에서는 해결이 될 것 같지만, 현재는 모든 브라우져에서 동일한 출력을 보장하는 CSS 파일은 불가능합니다.

따라서, 선택은 세가지로 압축됩니다. 브라우져 핵을 이용하거나, 브라우져 별 별도의 CSS를 만들거나 아니면 디자인 자체를 핵이 필요없는 것으로 바꾸거나…

방금 검색을 해서 알아본 두가지 CSS 코드를 소개합니다.

<style type=”text/css”>
#mydiv {
color: blue;
drdoc: “;
drdoc: “”;
color: red;
background: silver;
/*”;/* IE */
font-weight: bold;
}
#nextdiv {
color: red;
}
body {
background: navy;
}
</style>Note: IE will continue parsing after /* IE */

그리고,

<style type=”text/css”>
#mydiv {
color: blue;
/*/*/
drdoc: “;
drdoc: “”;
/* NN4 */
color: red;
background: silver;
/*”;/* IE */
font-weight: bold;
}
#nextdiv {
color: red;
}
body {
background: navy;
}
</style>

이것은 라운드 박스를 구현하는 CSS입니다.

border: 2px solid gray;
-moz-border-radius: 25px;
width: 400px;
height: 200px;
padding: 15px;

브라우져 호환성을 갖게 하기 위한 노력으로 이런 코드는 레퍼런스도 없습니다. 해보고 되면 블로그등에 올려서 전파됩니다. 그러고보니 집단지성이군요.

이 글을 보시는 관계자 분들은 위의 코드를 해석하실 수 있습니까? 만약 전임자가 이런 코드를 넣었다면 수정하실 수 있겠습니까?

CSS로 잘 만든는 것은 무엇을 의미하는가?

CSS가 쉽지 않다는 것은 누구나 알고 있습니다. 보통 CSS가 레이아웃을 잡는데 “잘 만들면” 더 생산적이고 편하고 빠르다라는 말을 하는 분도 있습니다. 물론 실력이 있어서 브라우져 핵을 자유롭게 쓰는 분일 것입니다.

여기서도 문제는 있습니다. 브라우져 핵이 필요한 CSS파일을 누군가는 만들어야 합니다. 프로그래머? 디자이너? 컨텐츠 제작자? 만약 웹디자이너가 한다고 하면 기업에서 면접을 볼 때 브라우져 핵을 하지 못하면 뽑지 말아야 하나요?

XHTML은 1.1버젼에서 HTML4.0과 양립할 수 없습니다. 어떤 해결방법이 있을까요? 전 현실적인 문제로 인해 찾을 수가 없습니다.

난 XHTML1.1+CSS2.0을 반대하는 것이 아니다. 하지만 불편한걸 어쩌나?

CSS를 설명하는 블로그를 보면 보통 팁으로 설명합니다. 브라우져 핵도 마찬가지구요. w3schools.com은 CSS 초기버젼을 잘 설명해 주고 있습니다.

제가 의문을 제기하는 것은 CSS 레이아웃에 한정하는 문제입니다. 어떤 분은 가능하다, 어렵지 않다 라고 합니다. 우리는 CSS로만 레이아웃을 할 때 아래와 같은 기능을 해야 합니다.

1. 모든 브라우져에서 같은 디자인이 출력되어야 한다.
2. 디자이너가 디자인 한 것 그대로가 화면에 나와주어야 한다.
3. CSS는 화면 크기를 변경했을 때 원하지 않는 동작을 하면 안된다.
4. 가로 길이가 %로 정해졌을 때도 3번은 지켜져야 한다.

제 경험으로는 위의 것을 CSS 레이아웃만으로 구현하는 것은 가능은 할 지언정 절대 쉽지 않습니다.

이렇게 되면 하겠다.

아래의 것들이 완벽히 작동된다면 CSS 레이아웃은 사용할 가치가 충분하지 않을까 합니다.

1. 브라우져별 공통의 CSS 레퍼런스가 존재하고, 그것이 제대로 작동된다.
2. 1번이 안된다면 공통 스타일 파일이 존재하고, 파일 레퍼런스만 지키면 대부분 브라우져에서 작동한다.

이 글은 Jay G님의 글에서 반론을 제기받고 답변으로 쓴 글입니다.

2 thoughts on “표준은 어디에나 존재한다. but…

  1. CSS가 아직은 – 또는 기존과 비교해서 – 어렵게 느껴진다는 것에는 동의 하지만 몇가지 사실과 맞지 않는 부분들이 있습니다.

    우선, CSS 레퍼런스만 보고 디자인 할 수 없는 것은 다른 개발 언어도 마찬가지 입니다. 레퍼런스만 보고 자유롭게 쓸 수 있는 것이 과연 있을 까요? CSS만이 가지고 있는 난점은 아닌데 마치 CSS만의 큰 단점처럼 글을 쓰시는 것은 분명 잘못된 것입니다. 그리고 테이블이 웹이 처음 생기때 부터 존재하지는 않았습니다. CSS보다 table태그가 먼저 생긴것은 사실이지만 웹이 처음 생길 때 부터 table을 사용했다는 것은 사실과 다른 내용입니다.

    사실과 다른 근거를 바탕으로, 그리고 과거에 CSS를 구성한 적이 있었다는 약간의 경험으로 CSS가 어렵고 복잡하고 대부분의 사람들이 제대로 다루지 못할 것이라고 말씀 하신 것도 잘못입니다. 이러한 현상이 없는 IT분야가 있나요? 어떠한 분야이든지 추상화, 모듈화, 캡슐화 될수록 초보자들이 쉽게 이해하지 못하는 것은 당연한 것입니다. 그렇다고 이러한 방법을 사용할 가치가 떨어진다로 말 할 수는 없습니다.

    이삼구글님의 웹표준에 대한 시각을 보면 HTML 정도야 쉬운건데 CSS같은 것 도입해서 어렵게 할 필요 없다고 생각하시는 것 같은데, 개발도 그렇게 생각하시나요? 개발도 코드 대충 복사해 갖다 붙이면 되는거 아닙니까? 성능떨어지면 기계 더 사다 붙이면 되는 거고요.

    다른 블로그들에 답변 다시는것 보면 어투도 공손하시고 좋은분 같은데 제가 과격하게 글 쓴점은 죄송하게 생각합니다. 하지만 글을 쓰실 때에는 사실과 다른 것을 전제로 논리적인 비약이 있는 글을 쓰지 않으셨으면 좋겠습니다. 정말 좋은 글은 탄탄한 사실 기반의 어느 한 곳 찔러도 빈틈없는 글이 아니라 자신이 느낌을 솔직하게 나타내는 글이라고 생각합니다.

  2. 개인적인 내용을 쓰자면 이렇습니다.
    CSS는 어려운 것이 아니라 현장에서 개발하기에는 여러가지 여건으로 힘들지 않나 하는 점입니다. 반면, 선도적인 분들은 CSS를 사용하는 것이 옳고, 테이블을 쓰는 것은 잘못된 것이다라고 말씀을 하십니다.
    또한 그 분들을 따르는 일부는 해보지 않고 가능하다 어렵지 않다고 말하는 분들도 간혹 있는 것 같습니다.
    전의 많은 토론에서 다른 블로그 님들도 결론내린 것이지만, 이 문제는 기술적인 문제라기 보다는 철학적인 문제라고 보여집니다. CSS가 쉽다 어렵다라는 것도 개인적인 문제이기도 하구요. 다만, 전 CSS2.0+XHTML1.1이라는 표준이 쉽지 않다는 사실을 말하고 싶을 뿐입니다. 글이 길어진 것은 다른 블로거 분들의 토론 과정에서 생긴 것이구요.
    개인적으로 전 프로그래밍이나 코딩을 공학이 아닌 예술이라고 생각하고 있습니다. 그만큼 개인적인 성향이 중요한 것 같더군요. 객체화가 일반화되면서 그런 것은 많이 줄어들었지만…(약간 아쉽)

Leave a Reply

Your email address will not be published. Required fields are marked *