문득 구독 feed들을 훑어보다가 CSS Opacity에 관한 불길한 내용을 읽게되어 여기에 옮겨놓는다.

CSS 3 Working Draft에 정의되어 있는 Opacity는 그 용법이 명확해서, 대부분의 웹 브라우저들에서 다음과 같이 사용될 수 있다.

#some-div {
  background: #999;
  opacity: 0.5;
  filter:alpha(opacity=50);  /* For IE 5-7 */
}

헌데, IE 8부터 사용하게 될 MS 전용 확장자(-ms-) 덕분에, 상황은 더 복잡해졌다.

IE8가 표준 모드로 웹 문서를 해석할 경우, 과거 MS만의 filter 용법은 완전 무시되면서 -ms-filter 속성과 함께 filter 정의 부분은 따옴표로 감싸주어야만 한다. 그래서, 간단한 opacity 속성 하나를 정의하려고 해도 다음과 같이 지저분한 용법이 사용될 판이다.

#some-div {
  background: #999;
  opacity: 0.5;
  filter:alpha(opacity=50);       /* For IE 5-7 */
  -ms-filter:"alpha(opacity=50)"; /* For IE 8 */
}

쉬운길 놔두고 멀리 돌아가는 것처럼 생각되는데, 이쯤되면 차라리 속편하게 PNG 그림으로 대체하게 생겼군. 하지만, 투명도가 들어간 PNG도 문제가 많으니 이래저래 골칫거리. 😐
결국, IEBlog에 나와 있는 대로 두 줄로 요약된다.

.fiftyPercentOpaque {
  opacity: 0.5; /* All modern browsers including IE9 */
  filter: alpha(opacity=50); /* IE5-IE9 */
}

내용 갱신: IE9을 포함한 모든 브라우저를 위한 Opacity 설정 방법.

.transparent {
  zoom: 1;
  filter: alpha(opacity=50);
  opacity: 0.5;
}

웹 디자인에 있어서 투명도가 섞인 PNG 그림 파일은 창의적인 디자인의 활용 폭을 넓혀주지만, 사용하는데는 한 가지 걸림돌이 있다. IE6에서 보여지는 alpha transparency가 적용된 PNG 파일은 흉측하기 마련. 그래서 여러가지 CSS hacks이 사용되기 마련인데, 그 중 가장 간단하고 효율적인 도구로 생각되는 것이 바로 Unit PNG Fix.

무엇보다도 사용법이 너무나 간단해서, 어떤 그림 파일의 조작 없이 아주 작은 크기(<1kb)의 js 파일을 올려두고 아래 코드를 추가해주면 다른 것은 잊어버려도 된다.

<!--[if lt IE 7]>
  <script type="text/javascript" src="unitpngfix.js"></script>
<![endif]-->

더군다나, 최근(08.26.08) 또 새롭게 갱신되면서 과거 불가피하게 사용되던 clear.gif 그림 파일이 더는 필요 없게 되어 한결 사용이 쉬워졌다.

그나저나, 8월 27일로 IE6의 탄생 7 주년이라는데, 끈질긴 생명력에 지쳐가는 시선들만 쌓이는군.

덧붙임 (2008.12.20): 어쩌면 골치아픈 IE6의 PNG 문제를 시원하게 해결해 줄 수 있는 새로운 치료약의 등장일지도 모르겠다. 이름이 약간 기억하기에 생소한 DD_belatedPNG로 기존 해결책들의 단점을 모두 해소한 듯.
과거 문제가 되던 background-position (fixed 제외)background-repeat 속성을 모두 지원하고, MS 전용 AlphaImageLoader 속서을 사용하지 않아서 z-index 관련 버그 걱정을 덜 수 있단다. IE를 위한 둥근 모서리 표시 기능을 제공하는 자매품 DD_roundies도 유용.

한동안 개발 주춤 상태에 있는 blueprintcss를 대신해서, 몇몇 개발자들이 모여서 Github에다 새로운 repository의 둥지를 틀고, 이와 동시에 새로운 프로젝트 홈페이지를 열면서 개발을 계속 이어나가기 시작했다.

지금의 현상은 Google Groups에 위치해 있는 Blueprint CSS의 유저 그룹이 스팸 처리가 안되는 등 원 개발자의 관리가 전혀 이루어지지 않고 있으면서 미리 예견된 상황이었다. 활기찬 개발로 다시 한번 CSS frameworks의 붐을 이어갈 수 있을까?

서울시에서 도시 정체성과 브랜드 가치를 높이기 위한 시도로 명조 계열인 서울한강체와 고딕 계열의 서울남산체를 Mac과 Windows 용으로 무료 배포하고 있단다.

그 동안 Mac에서 부담없이 사용할 수 있었던 글꼴의 상황은 가뜩이나 형편없고 선택의 여유마저 제한적이었었는데, 이제야 한 줄기 숨통이 트이는듯해서 아무쪼록 널리 사용되었으면 한다. 이참에, 블로그에 있는 제목의 글꼴도 서울남산체(SeoulGothic)로 바꾸어 봤는데, 작은 변화지만 어쩐지 새로운 느낌. 8)

그나저나, 서울남산체의 Tpyeface는 모두 5가지(Light, Medium, Bold, Extra Bold, vert)의 정보를 가지고 있는데, CSS의 font-weight 속성normal로 주어져 있을 경우, 얼추 Bold typeface 정보를 가져와서 표시해 주는듯하다. 만약 font-weight의 속성이 bold로 주어진다면, 이게 참 복잡해진다. 🙄

Blueprint가 0.7로 갱신되었다. 갱신된 지 오래간만이라 바뀐 내용도 조금 많은데, 우선 반갑게도 새로운 자기만의 스타일로 CSS 수정하고 압축할 수 있게 하는 Ruby script(compress.rb)가 추가되었고, 디렉토리 구조도 단순하게 정리되었다. 그리고 .column class가 필요없게 되면서 .span-x 형식의 class 만으로 column을 구분지울 수 있게 되면서 더 정리된 느낌이 들지만, div에서만 column 지정이 가능하기 때문에, 경우에 따라 제약이 될 수도 있을 것 같다. 이외에도 많은 벌레들이 잡혔다고. Blueprint 0.7 변경 사항

약간의 디렉토리 구조의 변경으로 실제 사용하기 위해 HTML의 head에 다음과 같이 적용해 주어야 한다. (IE를 위한 CSS 파일의 위치가 바뀌었다.)

<link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print">
<!--[if IE]><link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->

이번 갱신에서 가장 눈에 띄는 변화로 compressor 스크립트(lib/compress.rb)를 들 수 있는데, 이 놈은 압축 뿐만이 아니라 설정 파일(settings.yml)을 기준으로 여러 프로젝트에 위치하는 CSS 파일을 한꺼번에 자신의 입맛에 맞게 생성할 수도 있다.
터미널에서 compress.rb가 위치한 디렉토리로 이동 후, $ ruby compress.rb -h를 치면 아래와 같은 용법을 확인할 수 있다.

$ ruby compress.rb -h
Usage: compress.rb [options]
Blueprint Compressor
 
options
  -o, --output_path=OUTPUT_PATH    Define a different path to output
                                   generated CSS files to.
  -n, --namespace=BP_NAMESPACE     Define a namespace prepended to all Blueprint classes
                                   (e.g. .your-ns-span-24)
  -p, --project=PROJECT_NAME       If using the settings.yml file, PROJECT_NAME is the
                                   project name you want to export
  --column_width=COLUMN_WIDTH      Set a new column width (in pixels) for the output grid
  --gutter_width=GUTTER_WIDTH      Set a new gutter width (in pixels) for the output grid
  --column_count=COLUMN_COUNT      Set a new column count for the output grid
  -h, --help                       Show this help message.

보이다시피, 프로젝트별 설정을 위해 settings.yml 파일이 필요한데, 간단한 예로 딸려오는 settings.example.yml파일을 참고하면 된다.

my_project:
  path: /path/to/my/project/stylesheets
  namespace: custom-namespace-1-
  custom_css:
    ie.css:
      - custom-ie.css
    print.css:
      - docs.css
      - my-print-styles.css
    screen.css:
      - subfolder-of-stylesheets/sub_css.css
  custom_layout:
    column_count: 12
    column_width: 70
    gutter_width: 10
  plugins:
    - fancy-type
    - buttons

여기서는, 우선 각 프로젝트의 이름이 있고 각 프로젝트의 해당 디렉토리 위치와 BP(Blueprint) class 앞에 붙게 될 namespace, 그리고 BP 이외의 추가되는 custom css 파일을 지정할 수 있다.
또한 custom_layout 항목에서는 기본적으로 사용되는 24 column, 전체 너비 950px, column간 10px margin 말고, 사용 환경에 맞는 column의 갯수와 너비, 그리고 gutter(column 간의 margin)을 따로 지정할 수 있다. plugins 항목에서는 추가로 제공되는 여러 BP plugins 중에서 사용하고자 하는 놈을 선택해 준다.
마지막으로, semantic_classes 항목이 있는데, 이 놈은 그 동안 순결주의 웹 표준 개발자들로부터 약간의 비난을 받아왔던 의미없는 class 사용에 대한 반응으로 추가된 듯 하다. 이 놈은 단순하게 실제 BP를 사용하면서 지정해 두었던 class의 pattern을 이용해서 여기에 대응하는 의미를 갖는 이름의 id나 class로 대치시켜주는 기능을 하지만, 순수 결백 주의자들에게는 반가운 기능일지도.
사소한 변화로, clearing floats를 위해 사용됐던 .clear class가 .clearfix로 이름이 바뀌었고, 기본적 clearing을 위한 .clear (clear:both;) class가 추가되었다.

마지막 적용은, $ ruby compress.rb -p MY_PROJECT_NAME만 쳐주면 끝.

이렇게 Blueprint도 1.0 버전에 가까워 지면서 더욱 성숙되고 편해져 가는 모습을 보니, 믿음직하군.