[순천맛집] 생애 첫 전남 순천 방문기 "완도조개구이"


이걸 참 리뷰라고 써야할지 말아야할지,
그래도 난생 처음 전라도라는 지역을 다녀온 기념으로 일기마냥 끄적이기로 하였음.


어제? 엊그제? 무튼 2011년 12월 초 어느날
급으로 떠난 여행아닌 여행으로 서울<->순천을 당일치기로 다녀왔다. (누군가에게는 비밀)

사실 고속도로타고 대전지날 쯤까지 목적지도 모르고 있다가

시간은 흘러흘러 도착한 곳이 바로-


...... "순천역"

전라도 쪽으론 한번도 발들여본적이 없다던 내 얘기를 기억하던 지인님께서
휴대폰, 아이패드, dslr카메라, 지갑 이 네개만 달랑 들고 나온 나를 친절히 땅끝가까이 데려다 주셨다.


예.고.도.없.이.........




너무 갑작스러운 상황에 온김에 밥한끼라도 먹고 올라가려고 "순천맛집"을 검색해 본 결과,

순천하면 백반, 수 많은 백반집 리뷰 리스트가 있었고..




개인적으로 지금 쓰고 있음에도 불구하고
'소문난 잔치에 먹을 것이 없다' 라는 속담처럼
유명세에 서비스가 불친절 하다던가, 맛이 변했다던가, '빨리 먹고 나가주세요'하는 식의 몇몇 유명 맛집을 방문한 후로 이미 광고/홍보로 찌들어 버린 블로그 포스팅을 믿지 않아 버렸다. 사람 입맛이라는게 지극히 주관적인 것은 물론, 걸핏하면 맛집이라는 타이틀로 평범한 식당을 고급유명맛집으로 포장시키는 것 뿐 오히려 부지런히 포스팅을 즐기는 열심블로거에게는 폐가 된다는 점이 그 이유이다. (블로그보다 더 과장된 TV맛집방영에 실체를 다룬 다큐멘터리 영화 "트루맛쇼"를 한번쯤 보길..)

이런 이유로 앞으로나 지금이나 맛집이라 칭하며 이 곳에 올리는 포스팅은
맛도 어느정도 갖춰야겠지만, 음식맛을 떠나 좋은사람들과 기분좋게 먹은 후기를 담고자 하는 것 뿐
'이 집 정말 맛있어요~', '꼭 한번 가보셔요~' 하는 것은 아님.! (가는 건 본인 마음)
제목에 맛집이라고 붙이는 것은 '작성자인 내가 기분좋아서 있게 잘먹었습니다 하며 인사하고 나왔던 ' 정도로 생각하면 될 듯 싶다.






어쨌거나 저쨌거나,
그중에서도 블로그포스팅이 가장 많던 두 집이 있었는데 시간이 늦은 관계로
일단 문연데를 찾는게 급해 이곳저곳 둘러 보았지만


흥덕식당과 알선식당은 두집이 서로 맞을 편에 위치해 있어서 혹시나 하는 기대를 가졌었는데 ..역시나 닫았을 수밖에 술집아닌 밥집이 아침 일~찍 열면 모를까 밤 늦↗~~게 까지 할 리가 없었다. 으앙 








차타고 빙글빙글 돌기만 하다가
순천까지 내려와서 어딜가나 있는 역앞 24시 해장국집을 갈건 아녔고,

뭐 조금 허탈하더라도 괜찮은 메뉴 없을까하다가 찾은 곳이 바로 여기.


순천시 연향동에 위치한 완도조개구이 였다. (역에서 그다지 멀지 않음)
참치집이 근처에 있어 참치를 먹을까 하다, 처음가는 참치집은 왠지 낭패 볼 확률이 높아서 pass





테이블에 자리잡고 앉은 뒤 주문한 메뉴는
전복회와 조개구이小 였나, 中이었나.. 가물가물한데 小자 였을 듯.


바로 밑반찬을 가져다 주시고,

굽기 귀찮고, 불 앞이라 뜨겁고! 이런 이유에서 겁나 좋아하지만 자주 먹지 않는 조개구이지만 여기는 왠지 안 뜨거워 보이는 화로가 마음에 들었다...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ(별게 다..)








간단한 밑반찬 몇가지.. 이거야 뭐 매번 바뀔터이니 참고











전복회 나왔습니다요.
500g, 1kg 두가지 중에 조개구이도 있으니 500g을 시켰는데
큼직한 놈으로 네 개가 나왔음 (먹다말고 찍어버림)

기대 이상으로 싱싱한 전복회에 흡족했다.









으아니, 小자를 시켰는데 꽤나 푸짐하게 나오는 턱에 나와 동행인 모두
이거맞음? 하면서 흡족한 비주얼에 소주1병을 추가했다. (서울로 돌아가야 하니 치사해도 나만 먹기로..)









너무 사랑스러워서 쓰는 내내 침샘자극..










여기서 잠깐,
잎새주? 라니 서울에선 볼 수 없던 낯선 소주가 왔던 것이었던 것이었다.
참이슬 후레쉬, 오리지날, 처음처럼 요 세가지 외에 각 지역마다 하이트? 화이트?, 참소주, 씨원소주 정도는 봤었다만 너는 뭐다냐?









소믈리에가 뽑은 1등 소주
뭐 그렇다면 그런거겠지 하며 한잔 두잔 세잔 ...
같은 19.5도인데 기분탓에 좀 더 순하게, 시원하게 느껴지는 착각에 빠져버렸다...ㅋㅋㅋ
전남지역에선 잎새주를 먹는군요?







메인안주가 준비되기전 쇠주부터 한 잔 꺾은 나님은,
전복회로도 충분했으나 이 반찬에 푸욱- 빠져 갉아먹고 있었다!

절인 무 에 고추냉이를 갈아 얹은 녀석이었는데 (따로 이름이 있거나한건 모름)
코가 뻥 뚫리는게 우왕굳 내스탈임
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ집에서 만들면 저 맛 비슷하려나 모르겠네.








지글지글 굽습니다 조개! 키조개! I love 키조개
전복내장은 종지로 옮겨두고 조개 취식을 기다립니다.....

(역시나 예상대로 마음에 들었던 화로. 진심으로 탐난다)










초고추장 범벅해서 거의 다 먹어가는 중에 쓸데 없이 한 컷 (앞사람 자리비운 사이의 뻘짓정도)
아참, 저 그릇에 담긴 조개탕?은 싱겁게 먹는 내 입맛에도 맹탕이라 손이 안갔다는-












....................얼마 후


깨끗히 비움.. 행복했ㅇ...ㅓ...요.......ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ



조개구이小 25,000원
전복회 500g 30,000원
소주 1병 3,000원
사이다 1병 1,000원

합이 59,000원에 자잘한 바지락따위 없이,
(물론 초장+치즈+관자+잔조개 로 범벅이된 은박접시도 빠져 있지만!)
비교적 저렴한 가격에 두명이서 맛있고 배불리 먹어 마무리까지 훈훈해짐.



역시 조개구이는 소주없이는 힘들다는 교훈과 함께 이날부로 나의 금주선언은 증발해 버렸고, 서울에서 먹은 것과 별반 차이없지만 나름 깔끔한 음식과 적당한 음주량에 만족하며
이걸 먹을 목적으로 순천까지 내려올리는 없지만 오게되면 다시 한번 찾을것도 같다는 생각과 함께
늦은 새벽 집으로 향했다. 








허허.......
돌아서자마자 나오는 깊은 한숨은
순천에서 서울까지의 거리를 말해주는 듯..
집가서 뭐라 변명을 늘어놓을지 눈앞이 캄캄해지고 오금이 저리며 알딸딸한 정신에 일단 좀 조수석에서 자빠져 자고 싶은데 서울도착하면 아침이려나? 하는 걱정에 넋이 나가버림










역시나, "졸음운전은 위험해" 라는 이유로 전주쯤에서 잠깐 눈붙이고
집에 도착한 시각은 이미 해가 중천....;;;;;;;;;;;;




그래도 오는 길에 휴게소 한번 들러서 호두과자를 득템했다.
휴게소하면 호두과자, 호두과자하면 휴게소 아니겠음?





아무튼 이렇게 첫 순천방문기 + 완도조개구이집 포스팅은 끝
너모너모 엄격하신 부모님에게 신나게 털리고도 용케 살아서 이런걸 쓰고있는 내가 기특함.. (그치만 두 번 못할 짓)

혹시나 가족중 누군가나 가까운 주변인이 이걸 본다면 크나큰 후폭풍이 걱정이 되긴하지만 그럴리 없어.. 없다고 믿자..........






전남 순천 완도조개구이 집의 위치를 보려면 귀찮지만 클릭 ↓
  1. 아직 등록된 댓글이 없습니다.

2011 GREAT KOSIGN 코사인 전시회 참관 리뷰1 - digiSign 2011, 디지털 사이니지 산업전


출처 : http://blog.naver.com/lee_min_kyu/20144106034
 

2011 GREAT KOSIGN 코사인 전시회 참관 리뷰

11월 17일부터 11월 20일까지(4일간) 삼성동 코엑스에서 개최한 2011 KOSIGN 전시회 참관후기 입니다.


올해로 19회를 맞이한 코사인전은 Korea International Sign & Design Show 의 축약어로

해마다 많은 LED, Lighting, 디지털사이니지, 입출력장비, 디지털프린팅과 후가공 장비 업체들이 참가하여 국내외 사인 트렌트를 한눈에 살펴 보실 수 있습니다. 올해 코사인전은 LED/OLED 응용기술산업전, 디지털사이니지 및 키오스크 산업전과 동시 개최되어 더더욱 그러했습니다.

 

 

한국 국제 사인디자인전, KOSIGN은 해마다 많은 참관객으로 참가업체와 바이어간의 소통도 활발하다고 하네요. 2011 대한민국 옥외 광고대상 수상작들도 한자리에 전시되어 있어 보는 내내 눈이 즐거웠습니다.



전시회 현장을 1편부터 5편까지 총 5부로 나누어 생생하게 담아보았으니 옥외광고, 사인 디자인에 관심이 많으신 분들 모두 즐겁게 감상하시기 바랍니다 ^^



코사인 전시회 참관 리뷰1 - <digiSign 2011, 디지털 사이니지 산업전>


 

코사인 앞에 붙은 GREAT

 

Global Show

Ready Show

Emerging Market Targeted Show

A+(plus) Show

Trendy & Traditional

 

을 줄여 쓴 표현이라고 하네요. 전시회 컨셉과 실제 전시장 분위기가 맞아 떨어집니다.

 

 

  

맨 처음 발걸음을 향한 곳은 바로 B홀에서 개최중이던 

LED/OLED 응용기술산업전, 디지털사이니지키오스크 산업전 입니다. 

전시 기간이 코사인전보다 하루 짧은 3일간 진행돼는데 기존 사인전시회에서 보다 더 흥미로운 광고물들을 디지털사이니지, digiSign 2011에서 체험할 수 있었습니다.   

 

 


요즘 어딜가나 위 사진과 같은 디지털액자, did 멀티비전을 흔히 볼 수 있는데요. 

공간이나 장소에 상관없이 선명한 색상이나 고화질 영상, 높은 휘도로 
이전까지 사용되던 정적인 배너들에 비해 확실히 시각을 사로잡는 효과가 있는 듯 합니다.

 


이제는 전시관, 대형마트, 쇼핑몰, 역건물 등 유동인구가 많은 곳에 가면 쉽게 눈에 띄기 때문에

이런 액자형프레임을 발견하면 주로 '어디까지 얇아질수 있나' 하는 생각에 두께부터 보게됩니다.

 

 


다음사진은 투명 LCD 쇼케이스 입니다. 케이스안에 제품 모형이 들어있고 lcd를 통해 영상이 재생되고 있었습니다. 옆면도 투명으로 속이 훤히 보였지만 정면사진만 있네요.


투명lcd케이스는 주로 제품을 소개하거나, 제품을 더 돋보이게 할 디자인을 추가하기에 용이하겠지만, 원하는 영상을 쉽게 재생할 수 있다는 걸 보여주려는 의도인지 제품과는 무관하게 뮤직비디오를 틀어두셨더군요..ㅎㅎㅎ




짧게나마 동영상을 한번 보시죠~

 

 

    

가수 미쓰에이가 유목농민!을 외치고 있네요..ㅎㅎㅎㅎㅎㅎㅎ(모르신다면 나중에 검색..)

 

 

 

 



이런 광고 보신적 있으신가요? 

LCD인줄 알았는데 LCD가 아니랍니다..


 무려 얇은 유리나 아크릴에 빔 프로젝터를 이용해 영상을 비춰주고 있더군요! 빔프로젝터하면 검은색의 무겁고 묵직한 사무실의 빔프로젝터만 떠오르지만, 

미니빔을 사용하여 영상이 어디서 나오는지 모르게끔 호기심을 유발하여 인지 주목도가 높았습니다. 

 



위 사진과 같은 제품으로 예쁘장한 여자분이 미소를 머금고 바라보고 있네요. 



무슨 광고 일까요~?

 이걸 보시면 한눈에 알아채시리라는 생각이 듭니다.




 










Before -> After..


답은 성형외과 광고였습니다 ^^; 충분히 시선이 집중 되네요.

위에 적어두었듯 빔프로젝터를 이용하여 업체 관계자분이 설명하시느라 살짝살짝 가려지는게 보이지만 그냥 찍어버렸습니다..ㅋㅋㅋ

 

 





다른 한쪽구석에서 번쩍번쩍 빛나는 안내표지판?을 발견.

유리에 led 빛을 비추자 남대문을 소개하는 글이 나타나고 있었습니다.

신기하게도 led 색상이 바뀔때마다 한국어/일어/영어 순으로 언어가 바뀌고 있더라구요..

 

 


 

아랫쪽에 비추는 led 모듈과, 글자뒤로 희미하게 보이는 음각을 보아 어떤 원리인지 짐작이 가시나요^^?ㅎㅎ




+ LED/OLED 응용기술산업전은 

동시 개최되는 세 전시회 중 가장 작은 규모로 조금은 서운한 감이 남았습니다..

 

 

 

 


A홀과 B홀 사이 통로로부터 멀지 않은 곳에 이런게 있었네요. 무안경 3D 디스플레이라는..

말그대로 안경없이 3D를 감상할 수 있는 영상장치였습니다. 무안경 3D디스플레이로 비슷비슷한 기존 광고물에서 보다 생동감 넘치는 입체영상을 즐길 수 있겠네요.

 

 


가운데 안내 문구에 적정거리는 4미터, 21.5인치 모니터는 1미터라고 적혀 있어 두세걸음 물러나서 보니 입체감이 느껴지더군요. 이건 사진만 봐서는 모르겠네요.

 



이렇게 digiSign 2011 관람을 마치고 B홀에서 -> A홀로 이동했습니다.

정작 직접 만져보고 체험할 수 있는 키오스크는 아쉽게도 사진으로 담아두질 못했네요.

키오스크(kiosk)라는 단어를 자주 사용하지 않아 다소 생소할수도 있지만, 터치식 무인단말기 정도로 표현이 됩니다. 

대부분 터치스크린방식을 많이 사용하여 일상생활에서 쓰이는 ATM기, 극장 안 티켓발권기라던지, 터치식 매장안내기, 요즘 지하철역에서도 곳곳에 광고와 길찾기, 출구정보 등을 하나로 해결한 다음 디지털뷰도 예로 들 수 있겠네요.




전시장 안 역시 교통카드충전기, 카드포인트조회기 등 여러 기기가 있었지만 돌아다니면서 눌러보느라 신이 나서 사진은 잊었나봅니다.. 디지털사이니지 및 키오스크 산업전 이라고 전시회명에도 나와있는데 말입니다^^;;;;


아! 가장 인기가 많았던 건 스마트폰 사인인화 서비스가 아니었나 싶습니다.





여기까지 1부 <digiSign 2011, 디지털 사이니지 산업전 편>의 짧은 리뷰를 마치고 
다음 포스팅에서 2부 <LED/Lighting편>으로 찾아 뵙겠습니다.




  1. 아직 등록된 댓글이 없습니다.

Internet Explorer CSS bug fixes


구글, 유튜브 등이 2010년부터 인터넷익스플로어6를 더이상 지원하지 않는다고 발표했고, 심지어 IE6의 장례까지 치루었지만, 크로스 브라우저 테스트시 광란의 CSS 버그마저 그냥 지나치는 웹디자이너/개발자는 없을 것입니다.

이 포스트는 ie의 시각적인 버그들을 잘 정리하고 있는 positioniseverything.net를 토대로 간략히 정리하면서 일부 수정하고 추가한 것입니다. 하지만 개인적인 필요에 의해 정리해둔 거라서 내용이 친절하지 않으므로, 자세한 내용은 위 사이트를 참고하시길…

IE 버그 원인과 해결책을 찾기위해 시간을 보내는 일은 매우 스트레스 받는 일이며, 궁극적인 해결이 아닌 버그 회피인지라 머릿속에 잘 남지도 않습니다. 때문에 굳이 아래 내용을 다 읽고 숙지할 필요는 없습니다. 레이아웃이 뭔가 이상하다 싶을때, 대충 height:1%, display:inline, position:relative, width:100% 중 하나를 쳐넣어보세요. 그래도 해결되지않을때 아래 내용을 참고하세요.

——

Doubled Float-Margin Bug
버전: IE6
문제: float 요소에 margin을 적용했을 경우, margin이 이중으로 표현되는 문제
해결: float 요소에 display:inline 적용
참고: http://positioniseverything.net/explorer/doubled-margin.html

——

Peekaboo Bug
버전: IE6, IE7
문제: float 요소 안의 내용이 나오지 않다가, 브라우저 창 크기를 조절하거나 스크롤했을때에만 가끔 내용이 나타나는 문제
해결: float 요소와 그 요소를 감싸는 요소 모두 적용
position: relative; /* IE6 bugfix */
min-width: 0; /* IE7 bugfix */
참고: http://positioniseverything.net/explorer/peekaboo.html
참고: http://www.brownbatterystudios.com/sixthings/2007/01/06/css-first-aid-for-ie-peekaboo-bug/

——

Duplicate Characters Bug
버전: IE6
문제: float 요소가 1개 이상 연속될때 마지막 float 요소의 문자 끝부분이 중복 출력되는 문제로, float 요소 내부에 <!– comment –>, <input type=”hidden” />, { display:none; } 와 같은 요소들이 포함되어있을때 발생.
해결: float 요소에 display:inline 적용
참고: http://positioniseverything.net/explorer/dup-characters.html

——

Expanding Box Problem
버전: IE6
문제: 레이아웃 요소의 크기를 지정했음에도 불구하고, 지정한 크기보다 큰 텍스트(띄어쓰기가 없는 긴 텍스트)를 포함할 경우 요소의 크기가 늘어나버리는 문제
해결: 해당 요소에 word-wrap:break-word; overflow: hidden; 적용
참고: http://positioniseverything.net/explorer/expandingboxbug.html

——

Guillotine Bug
버전: IE6, IE7
문제: float 요소의 하단이 잘리거나(IE6), float 요소를 포함하는 컨테이너 요소의 크기가 늘어나버리는(IE7) 문제
해결: float 요소를 포함하는 컨테이너 요소 바로 뒤에 clear해주는 요소를 삽입(예: <div style=”clear: both”></div>)
참고: http://positioniseverything.net/explorer/guillotine.html

——

IE6 Float Model Problem
버전: IE6
문제: float 요소 다음에 width가 선언되지 않은 non-floated 요소가 위치하면, 두 요소의 바운더리는 겹쳐야 한다. 하지만 non-floated 요소의 width가 선언되면, non-floated 요소가 float 요소 옆으로 나란히 위치하는 문제.
해결: 없다. 두 요소의 바운더리가 겹쳐져야 하는 상황을 아예 만들지 말거나, 꼭 겹쳐져야한다면 position을 사용하는 등의 다른 방법을 구사.
참고: http://positioniseverything.net/explorer/floatmodel.html

——

Three Pixel Text-Jog
버전: IE6
문제: float 요소 다음에 non-floated 요소가 위치하면, non-floated 요소의 텍스트가 3 pixel 밀리는 문제.
해결: float 요소에 {margin-right:-3px}, non-floated 요소에 {height:1%; margin-left:0} 적용
참고: http://positioniseverything.net/explorer/threepxtest.html

——

Inherited margins on form elements
버전: IE6, IE7
문제: form을 포함하는 컨테이너 요소에 margin이 적용되어있을때, 특정 input 요소들이 컨테이너의 margin을 상속받는 오류.
해결: input 요소 앞에 inline 요소를 삽입하거나, span, label 등의 컨테이너 요소로 input 요소를 감싼다.
참고: http://positioniseverything.net/explorer/inherited_margin.html

——

Line-height Bug
버전: IE6
문제: plain text 중간에 inline으로 img, input, textarea, select, object가 삽입되어있을 경우 line-height 제대로 표현하지 못하는(collapse됨) 문제.
해결: inline으로 삽입된 img, input… 요소의 상하 margin을 교정 (예: {margin:45px 0; vertical-align:middle;})
참고: http://positioniseverything.net/explorer/lineheightbug.html

——

Border Chaos
버전: IE6
상황: block 요소가 두개 있다. 두번째 요소의
문제: 연속되는 block 요소중 두번째 이후 요소들의 margin-top이 음수이고, border가 적용되어있을때, 나타나는 광란의 버그
해결: 연속되는 block 요소들의 컨테이너(parent)에 {position: relative;} 적용
참고: http://positioniseverything.net/explorer/border-chaos.html

——

Disappearing List-Background Bug
버전: IE6
문제: 리스트(ol, ul, dl)를 감싸는 div의 position이 relative이고 float되어있으며, 리스트요소(li, dt)에 background가 사라지는 문제(background를 적용했을때).
해결: 리스트요소(li, dt)에 {display:inline} 적용
참고: http://positioniseverything.net/explorer/ie-listbug.html

——

Unscrollable Content Bug
버전: IE6
문제: position이 relative이고 크기가 지정되지않은 컨테이너 요소가, position이 absolute이고 크기가 페이지보다 큰 컨텐츠를 포함하고 있다면 스크롤바가 나타나야 하지만 그렇지않은 문제.
해결: 컨테이너 요소에 {height:1%} 적용
참고: http://positioniseverything.net/explorer/unscrollable.html

——

Duplicate Indent Bug
버전: IE6
문제: float요소가 padding 또는 margin이 적용된 컨테이너에 위치하고 있다면, 이중으로 적용되는 문제.
해결: 경우의 수가 워낙 많지만, 대부분의 경우 {display:inline} 으로 해결 가능.
참고: http://positioniseverything.net/explorer/floatIndent.html

——

Escaping Floats Bug
버전: IE6
문제: 크기를 지정하지 않은 컨테이너가 float요소 여러개를 포함하고 있는데(clear 요소로 float 해제했음), 컨테이너 영역이 제대로 표현되지 못하는 문제.
해결: 컨테이너에 {height:1%} 적용
참고: http://positioniseverything.net/explorer/escape-floats.html

——

Creeping Text Bug
버전: IE6
문제: block요소가 또 다른 block요소를 포함하고 있고, border-left, padding-bottom이 적용되어있을때, 내부의 block요소가 1px씩 좌측으로 기어들어가는 문제
해결: 외부 block요소에 {height:1%;} 적용
참고: http://positioniseverything.net/explorer/creep.html

——

기타
문제: a를 block으로 지정하면, 블록 전체가 마우스에 반응해야하는데 여전히 텍스트에만 반응하는 문제
해결: height:1%

문제: 리스트요소(li)간 간격이 발생하는 문제
해결: display: inline

문제: {position:absolute; bottom:0; right:0}인 요소가 relative인 부모의 우측하단에 위치하지 않고 전체 화면의 우측하단에 위치하는 문제
해결: height:1%

——

FireFox의 버그
문제: 배경 이미지의 위치를 bottom으로 했을 경우, 브라우저 크기보다 컨텐츠의 크기가 짧다면, 배경이미지가 컨텐츠 하단에 위치하는 버그
해결: html {height:100%} 

출처 : http://urlless.com/internet-explorer-css-bug-fixes/

  1. 아직 등록된 댓글이 없습니다.

IE6 커닝 페이퍼: IE6 버그 25+ 해결하는 방법


이 문서는 Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs를 이석진님께서 번역해 주신 것입니다. 감사합니다.

IE 6를 가장 잘 다루는 전략은 지원하는게 아니다.

잠시만. 좋아요, 당신이 느끼는 좌절감을 나도 느껴요. 당신은 개발자고, 당신은 IE6을 사용할 수 밖에 없기 때문에 머리털을 다 뽑고 싶을 정도로 괴로울 거에요. 그러나 열 받게도 IE6는 당신을 돕지 않을거에요. 당신이 몇 시간을 투자해도 레이아웃이 제대로 안 된다고 느낄거에요. 나도 고통을 느낄 수 있어요. 하지만 내가 도울 수 있어요.

내 말은 그냥 하는 호언장담도 아니고, IE6를 죽이기 위한 캠페인도 아니에요. 웹에는 이미 IE6가 충분히 넘치고, 무시하기엔 시장점유율이 너무 높아요. 이건 당신이 기대고 희망을 걸어야 할 자료들이에요.

난 이 자료들를 위해서 웹을 조사해 왔고, IE6를 직접 개선하기도 했어요. 그리고 지금은 이런 모든 것들을 IE6를 다루는 모든 사람들을 위한 자료로 사용하기 위해 컨닝페이퍼로 만들었어요. 대충 해킹한게 아니라, 각각의 버그에 깔끔하고 유효한 해결 방법을 제공하기 위해 최선을 다했어요. 난 각각의 케이스에 내가 했다는 일종의 증명(credit)을 부여하려고 노력했지만, 몇가지 솔루션은 너무나 많이 회자되서 원본을 알아보기 힘든 경우도 많았어요. 증명(Credit)이 없거나, 버그(bug)와 해결 방법(Fix)가 없으면, 내게 연락해요. 이 페이지를 업데이트 할께요.

이 거대한 IE6 가이드는 하나로 합쳐지는데 꽤 시간이 걸렸어요. 그러니, 괴로워 할 당신과 동료들이 북마크하고, 공유하고, 의견을 나누는 등 잘 사용했으면 해요.

전략

IE6의 버그와 해결 방법들에 대해서 이야기 하기 전에, 귀찮은 이슈들을 최소화하기 위한 몇 가지 전략들에 대해서 알아보는 것이 중요하다. 약간의 예방으로 앞으로 나올 사례(best practice)를 통해서 볼 많은 버그들을 다루는 것에 비해서 비용면에서 훨씬 효과를 볼 수 있다.

IE6 시장 점유율

시장 점유율에 따르면, 2009년 8월 현재, IE6의 사용자는 25.25%이다. 그러나 다른 자료들에 의하면 18.1% 정도로 낮게 나온 곳도 있다. 통계 수치는 다양하긴 하지만, 어쨌든 하락세를 보여준다. 그러나 정작 중요한 통계는 당신 자신의 수치다. 이미 당신의 사이트 트래픽을 분석했으면 알겠지만, IE6의 사용 수치가 당신 사이트를 개발하는데 도움이 되나? 비즈니스 용어로, IE6를 위한 개발하는 쪽과 IE6를 포기하는 쪽이 시간과 금전을 기준으로 비용/수익의 대비가 어떤가? 하락세의 IE6를 위한 사업 계획을 세울 수 있겠는가?

만약 대다수의 방문자가 IE6를 사용하지 않는다면, 그것을 위해 비용을 쓰면 안된다. 시간과 노력, 돈을 IE6의 문제를 해결하기 위해서 낭비하면 안된다.

디자인 계획을 세우고, 최대한 간단하게 하라

만약 당신이 미리 디자인 계획을 세우거나, 최선의 코딩 접근을 위해서 몇 분이라도 투자할 수 있다면, 당신은 잠재적인 레이아웃 문제를 피할 수 있다. 최고로 복잡한 비쥬얼 디자인도 간단한 코드 솔루션으로 만들어 낼 수 있다. 당신이 지나치게 많은 마크업을 사용하고 있다면, 당신이 다른 디자인 접근법을 사용해야 된다는 좋은 신호다.

당신의 경험이 늘어나고 다양한 레이아웃 이슈들을 해결해 갈수록, 당신의 결론과 해결했던 문제들에 대해서 잘 기록해놓아라. 장담하건데, 똑같은 문제에 또 부딪히고, 그러면 그전의 기록들이 시각 절약에 큰 도움이 될 것이다.

올바른 문서형(Doctype)을 사용해라

잘못된 Doctype은 골치아픈 상황의 시발이 될 것이고, 끊임없이 브라우저에 페이지를 뿌려주는데 문제가 생길 것이다. 오직 다음의 Doctype만을 사용할 것:

HTML 4.01 Strict

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Frameset

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

HTML 4.01 Transitional

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

XHTML 1.0 Strict

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Frameset

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.0 Transitional

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.1

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

코드를 유효하게 작성해라

어떤 사람들은 사업적인 이유로 코드 유효성 검사를 해야 할 아무런 이유가 없다고 말하는데, 난 거기에 반대한다. 유효성 검사는 대부분의 경우 그렇게 어려운 것이 아니고, 단지 몇 분 정도만 걸릴 뿐이다. XHTML과 CSS의 유효성 검사를 위해 투자한 몇 분은 IE6뿐만 아니라, 모든 브라우저에서 득이 된다. 유효성 검사는 전방 호환성을 보장해주고, 유지보수를 줄여준다. 최소한, XHTML 마크업이라도 검사해라. 유효성 검사를 무시해도 되는 유일한 경우는, 브라우저에 CSS3의 몇몇 프라퍼티를 잘 활용하려는 경우 뿐이다.

표준을 따르는 브라우저를 먼저 개발하라

코드 유효성 검사를 하면, Firefox, Opera, Safari, Chrome 등과 같은 표준을 따르는 브라우저를 위한 개발을 먼저하고, IE6와 IE7같은 표준을 따르지 않는 브라우저를 위한 개발을 하게 되는 고통을 피할 수 있다. 왜나면, 표준을 따르는 브라우저는 거의 똑 같은 방식으로 모든 것을 렌더링 하기 때문에, 이후에 IE의 이상한 부분들에 대해서 따로 접근할 수 있을 것이다. 이런 작업 방식을 사용하는 것이 당신에게 탄탄한 바탕을 제공하기 때문에 나중에 코드를 수정하는데 도움이 된다. 만약 수정사항에 대해서 적절하게 레이블링을 했다면, 만약 그게 필요 없을 때 쉽게 제거할 수 있다.

점진적인 향상을 사용하라

점진적 향상이란 쉽게 말하면, 삐까뻔쩍한 기능들을 추가하기 전에 모든 사용자들에게 적용되는 기본적인 기능을 확실하게 만들어 놓는 것이다. 일반적으로 점진적인 확장은 자바스크립트 없이 웹 어플리케이션을 만들고, 후에 애니메이션, Ajax 효과 등을 위해 자바스크립트를 사용하는 것이다. 그러나 IE6를 언급 할 때는 CSS3(또는 CSS2의 많은 부분들), HTML5, 그리고 IE6를 지원하지 않는 다른 웹 프로토콜 등을 사용함에 있어서 점진적 향상 원칙을 적용할 수 있다.

어떤 경우에는 모든 브라우저에서 모든 사용자들에게 똑같은 경험을 제공할 수 없을 수도 있다. 특히 IE6에서는 그럴 것이다. 점진적 향상 전략은 사용자가 웹 사이트나 웹 어플리케이션을 사용할 때 최소한 필수적인 기능들을 사용할 수 있도록 보장해준다.

점진적 향상이 더 궁금하다면:

CSS를 초기화 해서 사용해라

브라우저들은 각각 기본 스타일 쉿을 가지고 있고 당연히 서로가 다르다. 당신의 스타일 쉿의 초기의 간단한 리셋 룰은 브라우저에 상관없는 코드를 쓸 때 오래 걸린다. 간단한거부터 자세한거 까지 인터넷에는 방대한 리셋 법칙이 있다.

간단한 CSS 초기화

  1. body,div,ul,ol,li,h1,h2,h3,h4,h5,h6,form,fieldset,input,textarea,p,th,td {margin:0;padding:0;}

인기 있는 CSS 초기화

자바스크립트 프레임워크를 사용해라

만약 당신의 웹에서 자바스크립트가 중요한 부분을 차지한다면, 자바스크립트 프레임워크를 사용해 보기를 권한다. 대부분의 프레임워크들이 IE6를 포함한 여러 브라우저에서 테스트되었고, 전부는 아니라도 많은 자바스크립트 이슈들을 자동으로 처리 할 것이다. 그리고 선택할 수 있는 자바스크립트 프레임워크들이 여럿 존재하는데 일반적으로 여기서 가능한 것은 저기서도 가능하다. 따라서 당신의 개인적인 문법 선호도에 따라서 선택하면 된다.

몇몇 유명한 프레임워크 목록:

물론 다른 많은 것들이 존재하고, 계속해서 새로운 것들이 나온다. 나중에 시간이 나면 전체 리스트도 한 번 만들어 보겠다. 당신이 자바스크립트에 대해서 자신만의 방법이 있다면, 개인적으로 MooTools을 강력히 추천한다. 당신이 초보라면 jQuery가 두 번째 추천이다.

IE를 위한 자바스크립트를 사용해라

인터넷에는 IE6를 표준 브라우저처럼 만들어주는 몇 몇 자바스크립트 솔루션이 떠 돌아 다닌다. 만약 당신의 IE 사용자들이 활성화된 자바스크립트를 사용하는 비율이 높다면, Dean Edward의 IE7 또는 유사한 Script를 사용하기를 권한다.

IE 디버깅 하는 법

IE는 디버깅 하기 어렵기로 악명 높지만, 개발자 입장에서 쉽게 만들어주는 많은 툴들이 존재한다. 이미 언급했듯이, 먼저 표준 브라우저를 위한 개발을 해라. Firebug와 WebDeveloper Toolbar는 둘다 Firefox의 훌륭한 부가 기능들이다. IE에 있는 많은 버그를 해결하는데 도움을 준다. 만약 다른 브라우저에서 Firebug의 힘을 쓰고 싶으면, http://getfirebug.com/lite.html Firebug lite가 브라우저의 북마크릿으로 사용될 수 있다.

IE의 많은 인스턴스를 테스트하기 위해서, 가상 머신을 까는거 말고 최선의 옵션은 IE CollectionIETester 이다. IETester는 개인 사용자는 공짜, 60일 이후의 상업적인 사용에는 라이선스가 필요한DebugBar도 플러그인으로 제공한다.

IE6 고립시키는 방법

IE6를 다루는 첫 번째 스텝은 IE6를 고립시켜서 IE6에 영향을 주는 그 어떤 변화들도 다른 브라우저에 영향을 끼치지 못하게 하는 것이다. IE6를 콕 집어내는 몇 가지의 방법이 있다. 조건부 주석 사용, CSS 선택기, 자바스크립트. 각각에 대해서 돌아가면서 살펴볼 것이다.

IE를 위한 조건부 주석 사용하기

마이크로소프트사는 다른 버전의 IE을 목표로 조건부 주석을 포함시켰다. 마크업, 자바스크립트, 자바스크립트 파일들, CSS, 외부 스타일시트를 포함하여 조건부 주석 안에 그 어떤 것도 삽입 할 수 있다. 조건부 주석을 사용하면 당신은 구체적인 버전의 IE를 집어내거나, 특정 버전 전,후의 어떤 버전이라도 집어낼 수 있다.

문법은 다음과 같다:

  1. <p>This message will appear in all browsers.</p>
  2. <!--[if lte IE 6]>
  3. <p>This message will only appear in versions of Internet Explorer less than or equal to version 6.</p>
  4. <![endif]-->
  5. <!--[if gte IE 6]>
  6. <p>This message will only appear in versions of Internet Explorer greater than or equal to version 6.</p>
  7. <![endif]-->
  8. <!--[if gt IE 6]>
  9. <p>This message will only appear in versions of Internet Explorer greater than version 6.</p>
  10. <![endif]-->
  11. <!--[if IE 5.5]>
  12. <p>This message will only appear in Internet Explorer 5.5.</p>
  13. <![endif]-->
  14. <!--Sample Conditional Stylesheet, IE6 and below-->
  15. <!--[if lte IE 6]>
  16. <link type="text/css" rel="stylesheet" href="css/ie6.css" />
  17. <![endif]-->
  18. <p>This message will appear in all browsers.</p>

조건부 스타일시트를 사용하면 다른 방법에 비해서 몇 가지 장점이 있다. 스타일시트는 다른 스타일시트와 구분되고, 다른 브라우저에 영향을 주는 등의 혼란이 없다. IE6가 현저하게 시장점유율이 낮아진다면, 그 스타일시트를 제거하기만 하면 된다.

조건부 파일을 사용하는 유일한 단점은 그것들이 추가적인 HTTP 요청을 브라우저를 위해서 페이지에 추가한다는 것이다. 이것이 스타일시트를 사용하는 것과 비교하면 수용 가능한 거래(trade-off)이긴 하지만, 조건주 외부 자바스크립트 파일을 사용하는데는 반대한다. 왜냐하면 자바스크립트 파일은 마치 블록커(Blocker)처럼 행동하고, 그들이 완전하게 로드되기전에는 다른 파일들이 로드 되는 것을 막을 것이기 때문이다. 만약 당신이 외부 파일에 조건부 자바스크립트를 필요로 한다면, 그 브라우저를 목표로 하는 자바스크립트만을 사용하라.

CSS 선택자로 IE6 공략하기

만약 당신이 조건부 스타일시트를 원하지 않으면 CSS 선택자는 IE6를 타겟팅하기 위한 다른 선택이 될 수 있다. IE6는 자식 선택자를 지원하지 않는다. 당신은 먼저 IE6를 위한 CSS 선언문을 만들어야 하고, IE7이상과 다른 모든 현대적 브라우저에게 CSS 선언문 피드를 주기 위해 자식 선택자를 사용해야 한다.

먼저 HTML:

  1. <div>
  2. <p>Some Header Text Here</p>
  3. </div>

다음으로 CSS:

  1. /*This line for IE6*/
  2. .content {color:red;}
  3. /*This line for everyone else, using the child selector syntax*/
  4. div>p .content {color:blue;}

이 방법의 단점은 당신의 스타일시트를 지저분하게 만들 수 있다는 것이다. 따라서 주석들에 대한 명확한 기록(주석)을 남겨라. IE6를 위한 CSS 선언문은 다른 브라우저에 의해 검색되고 사용될 것이다. 따라서 자식 선택자 선언문 앞에 오는 것이 중요하다. 자식 선택자가 다른 선언문들을 재정의(override)하는 이유는 그것이 선언문에 높은 구체성을 부여하기 때문이다. IE6는 문법을 이해하지 못하므로, 그것을 무시한다. 그러나 다른 모든 브라우저는 그것을 처리 할 것이다.

더 읽어볼 것들:

IE6 탐지를 위해 자바스크립트 사용하는 법

만약 당신이 자바스크립트를 사용해서 IE6를 탐지하고 한다면 조건부 주석을 사용하지 말고, 다음의 방법을 이용하자:

  1. //Pure JavaScript, no framework - NOTE: this must be placed in an onLoad event or after the body has loaded or it will result in an error
  2. if(typeof document.body.style.maxHeight === "undefined") {
  3. alert('IE6 Detected');
  4. }
  5. //MooTools syntax (for IE7, use trident5)
  6. if (Browser.Engine.trident4) {
  7. alert('IE6 Detected');
  8. }
  9. //jQuery syntax - Note that the browser method is now deprecated in favor of feature detection through the support method
  10. if (($.browser.msie) && ($.browser.version == "6.0")){
  11. alert('IE6 Detected');
  12. }

더 읽어볼 것들:

이미지

IE6는 당신이 빡빡한 스케쥴이거나, 특정 레이아웃 또는 디자인과 단단히 결합되어 있으면, Show-stopper가 되는 이미지들과 관련된 많은 문제들을 가지고 있다. 이런 고통을 덜기 위한 내용이 다음이다.

IE6에서의 반투명 PNG 문제 해결

IE6의 실망스런 여러 문제들 중에 하나는 바로 고화질 이미지를 위한 투명도를 지원하지 않는 것이다. 겹쳐지는 효과를 힘들게 만드는. 몇몇 자바스크립트 솔루션들이 있다. 아래 열거하겠지만 Twin Helix의 IE6 PNG Fix의 알파버전을 제외하고 어떤 것도 CSS를 사용하는 것을 허용하지 않는다.

가장 간단한 솔루션은 이미지를 알파 투명도가 활성화된 PNG8 파일로 저장하는 것이다. 만약 당신이 어도비 Fireworks를 사용하고 있다면, 다음과 같이 수행 할 수 있다. Save As > Save as type > FlattenedPNG > Options > Alpha Transparency 만약 당신이 어떤 형식의 그라데이션을 사용하고 있다면, 약간 더 질 좋은 그라데이션을 얻기 위해 Dither 체크박스를 선택할 수 있다. 알파 투명도로 PNG8으로 저장한 것은 이미지의 부분 투명도 역시 100% 투명도로 렌더링할 것이다. 다양한 투명도를 제공하지는 않는다.

다른 옵션으로 IE6만을 타켓으로 하는 CSS 스타일시트에 특정 IE의 Filter를 추가하는 것이다. 이 블로그에서 Aaron Baxter가 강좌를 통해서 설명해 줄 것이다.

자바스크립트 PNG 해결 방법들:

IE6에서 둥근 모서리 만들기

여기서 자세한 설명을 하는 대신에 CSS 둥근 모서리 메뉴에 대한 강좌를 참고하길 권한다. 여러 브라우저와 상관 없이 만들어 낼 수 있는 둥근 모서리 방법을 알려준다.

깜박이는 배경 이미지 문제 해결하는 방법

당신이 만약 링크와 버튼을 위해서 배경 이미지로 CSS를 사용하고 있다면 IE6에서 그 이미지가 일시적으로 깜빡이는 걸 느꼈을 것이다. 이유는 IE6는 적절하게 배경 이미지를 캐쉬하지 않고, 매번 새로 로드하기 때문이다. 한 줄의 자바스크립트로 IE6가 이미지를 캐쉬하도록 만들 수 있다.

  1. document.execCommand("BackgroundImageCache",false,true);

다른 해결 방법:

레이아웃

IE6의 레이아웃 버그는 가장 다루기 힘든 것 중에 하나다. 특히 IE6를 제외한 모든 브라우저에 잘 돌아가는 픽셀 단위의 완벽한 디자인을 목표로 하고 있다면 이 장에서는 그런 문제들에 대해서 살펴보겠다.

hasLayout의 이해

IE6의 많은 버그와 렌더링 오류는 MS의 hasLayout이라는 프라퍼티 개념 때문이다. 간단하게 말하면 hasLayout은 요소의 높이와 넓이에 특정 길이(dimensions)가 주어질 때 마다 발생한다. 이런 선언이 없으면 많은 오류가 생기게 되는 것이다.

hasLayout의 긴 선언문 대신에 나는 John Gallant와 Holly Bergevin의 언제, 어떻게 hasLayout을 다워야 하는지에 대한 주제를 다룬 훌륭한 강좌를 참고하기를 권한다.

더 읽어볼 것들:

IE6 박스 모델

IE6이 Quirks Mode로 작동하면 IE6는 구성요소의 전체 폭에 패딩과 보더도 없는 박스 모델을 그려낼 것이고 이것은 MS의 오래된 해석을 사용한 것이다. 이런 종류의 버그를 다루는 최선의 전략은 올바른 문서형(doctype)을 사용하여 Quirks Mode의 유발을 피하거나, 이미 보더나 패딩 프라퍼티로 적용된, 구성요소에 적용된 너비 속성(Properties)을 사용하지 않는 것이다. 조건부 주석 또한 사용할 수 있다. 그러나 마지막 방법으로 사용되어야 한다.

더 읽어볼 것들:

Min Height

IE6는 최소 높이 속성을 무시한다. 대신에 높이를 최소 높이로 취급한다. Dustin Diaz에게 감사의 인사를 전하자. !important 선언문을 통해서 문제가 해결했다. IE6는 그것을 오버라이드 할 것이지만 다른 브라우저들은 그렇지 않을 것이다. 이같은 방법으로 최소 폭을 해결할 수 있다.

  1. /*Works in all browsers*/
  2. #container {min-height:200px; height:auto !important; height:200px;}

똑같은 효과를 얻기 위한 다른 방법:

  1. /*For IE6*/
  2. #container {min-height:200px; height:200px;}
  3. /*For all other browsers*/
  4. html>body #container { height:auto;}

Max Height

불행하게도, IE6에서 최대 높이 효과를 내는 방법은 스타일시트에서 자바스크립를 실행하는 것과 동일한 방법인, 특정 IE를 위한 CSS 표현을 사용하거나, 자바스크립트를 사용하는 것이다. 둘 중에, 나는 처리능력 면에서 비용이 많이 들고, 브라우저가 망가질 수도 있는 CSS 표현보다는 자바스크립트 방법을 추천한다. 둘 다 자바스크립트가 비활성화 되어 있으면 기능하지 않을 것이다. 모든 다른 브라우저들은 최대 높이를 지원하기 때문에, 이 솔루션은 오직 IE6만을 위한 것임을 명심해라.

JavaScript

  1. //Plain JavaScript, change the ID and dimensions to suit your code.
  2. var container = document.getElementById('container');
  3. container.style.height = (container.scrollHeight > 199) ? "200px" : "auto";
  4. //An alternative function. Note: for dynamic resizing, attach to the window resize event
  5. function setMaxHeight(elementId, height){
  6. var container = document.getElementById(elementId);
  7. container.style.height = (container.scrollHeight > (height - 1)) ? height + "px" : "auto";
  8. }
  9. //Example usage
  10. setMaxHeight('container1', 200);
  11. setMaxHeight('container2', 500);

100% Height

IE6에서 구성요소가 100%의 높이를 갖기 위해서, 당신은 그 부모 요소의 수정 높이를 구체화 할 필요가 있다. 만약 당신이 그 요소를 페이지의 최대 길이로 만들고 싶다면 HTML과 BODY 요소 모두에 height:100% 을 적용해라.

  1. /*100% height of the parent element for IE6*/
  2. #parent {height:500px;}
  3. #child {height:100%;}
  4. /*100% of the page length for IE6*/
  5. html, body {height:100%;}
  6. #fullLength {height:100%;}

Min Width

IE6은 Max Height, Max Width와 마찬가지로 Min Width도 지원하지 않는다. 두 가지 해결책이 있다.추가 마크업을 적용하거나 자바스크립트를 사용하는 것이다.

JavaScript

  1. //Plain JavaScript, change the ID and dimensions to suit your code.
  2. var container = document.getElementById('container');
  3. container.style.width = (container.clientWidth < width) ? "500px" : "auto";
  4. //An alternative function. Note: for dynamic resizing, attach to the window resize event
  5. function setMinWidth(elementId, width){
  6. var container = document.getElementById(elementId);
  7. container.style.width = (container.clientWidth < width) ? width + "px" : "auto";
  8. }
  9. //Example usage
  10. setMinWidth('container1', 200);
  11. setMinWidth('container2', 500);

Max Width

최대 폭을 가능하게 하는 유일한 방법은 자바스크립트를 사용하는 것이다.

  1. //Plain JavaScript, change the ID and dimensions to suit your code.
  2. var container = document.getElementById(elementId);
  3. container.style.width = (container.clientWidth > (width - 1)) ? width + "px" : "auto";
  4. //An alternative function. Note: for dynamic resizing, attach to the window resize event
  5. function setMaxWidth(elementId, width){
  6. var container = document.getElementById(elementId);
  7. container.style.width = (container.clientWidth > (width - 1)) ? width + "px" : "auto";
  8. }
  9. //Example usage
  10. setMaxWidth('container1', 200);
  11. setMaxWidth('container2', 500);

Double Margin Float Bug

IE6는 구성요소가 Floated 될 때, 동일한 쪽에 적용된 마진으로 floated된 구성요소의 마진이 부정확하게 두 배가 될 것이다. Steve Clason 은 간단히 구성요소에 display:inline 을 추가해서 해결했다.

  1. /*Causes a double margin bug in IE6*/
  2. .floatedEl {float:left; margin-left:100px;}
  3. /*The fix*/
  4. .floatedEl {float:left; margin-left:100px; display:inline;}

How To Clear Floats

당신이 만약 콘테이너를 써서 플롯된 요소를 감싸려고 할 때, 잘 감싸지지 않는다면, 둘 중에 한 가지 방법을 써라. 콘테이너의 높이 또는 폭 속성을 자동(auto)말고 수동으로 셋팅하거나, 또는 overflow 속성을 다음의 세 가지 값 중 하나로 추가해라: auto, hidden, scroll. Alex Walker가 처음으로 이 기법을 기록했고, Paul O’Brien에게 사용권을 주었다.

Sample HTML

  1. <div id="container">
  2. <div id="floated1"></div>
  3. <div id="floated2"></div>
  4. </div>

Sample CSS

  1. #container {border:1px solid #333; overflow:auto; height:100%;}
  2. #floated1 {float:left; height:300px; width:200px; background:#00F;}
  3. #floated2 {float:right; height:400px; width:200px; background:#F0F;}

더 읽어볼 것들:

Float Drops

Float drop 버그는 플롯된 콘테이너의 컨텐츠가 콘테이너의 폭을 초과할 때 생긴다. Firefox, IE7또는 다른 브라우저에서는 컨텐츠를 약간 잘라낸다. 그러나 IE6에서는 지정된 영역을 무시하고, 컨텐츠를 담기 위해 확장한다. 만약 어떤 구성요소가 컨테이너에 바로 옆에서 플롯되면, 그 구성요소는 컨테이너 아래로 떨어진다.

Float drop bug는 딱히 만족스런 해결책이 없는 IE6의 에러들 중 하나다. overflow:hidden; 이나 overflow:scroll 을 써서 겨우 해결은 할 수 있다. 그러나 hidden 값은 접근성 문제를 유발할 수 있고, scroll 값은 레이아웃을 망가뜨릴 수 있다. 자바스크립트 개선도 별로 유용하지 않다. 나의 최선의 제안은 수정된 레이아웃을 사용하거나, 컨텐츠의 크기에 많은 주의를 기울이는 방법밖에 없다.

더 읽어볼 것들:

The Guillotine Bug

길로틴 버그는 IE6(와 IE7)의 특히 골치아픈 버그다. 이 버그는 Floated 와 불분명한 구성요소가 마우스 오버 된 후에 non-floated 컨텐트와 다른 호버 스타일과 링크 될 때마다 컨테이너의 구성요소 보다 커질 때, 컨텐츠를 잘라내는 버그다. 어지러운가? 걱정하지 말라. 이 버그의 해결 방법은 Position Is Everything에 잘 문서화되어 있다.

버그를 유발하는 복잡한 원인에도 불구하고, 해결책은 간단한 편이다. 첫 번째 해결책은 컨테이너의 아래쪽에 추가적인 구성요소를 추가하고, 그 요소를 clear:both 로 셋팅하는 것이다. 두 번째는 길로틴 효과를 부르는 링크를 포함하는 구성요소에서 hasLayout 을 촉발시키는 것이다. 이것은 선언문에 height:1%; 을 추가 함으로써 간단히 해결할 수 있다.

더 읽어볼 것들:

1px Gap Bug For Absolutely-Positioned Elements

IE6(IE7에서는 수정됐다.)에서 이 에러는 라운딩 에러 때문에 발생한다. E6는 만약 부모 요소의 영역이 홀수 일 때, 절대 위치된 구성요소와 상대 위치된 부모 사이에 오른쪽 또는 아래쪽 가장자리에 1 픽셀의 간격을 포함할 것이다. 유일한 해결책은 부모 구성요소에 높이와 폭을 지정해주는 것이다. 안타깝지만, 유동 레이아웃을 위한 해결책은 없다. Paul O’Brien은 이 문제에 대해 자세한 설명을 덧붙였다.

3px Gap Float Bug

3픽셀 text jog bug라고도 불리는 이 버그는 IE6에서 텍스트가 플롯된 구성요소 바로 옆에 위치할 때 발생한다. IE6는 특별한 지정이 없어도 구성요소와 텍스트 사이에 3픽셀 마진을 추가 할 것이다. Stu Nichols 이 문제에 멋진 해결책을 제시한다.

IE And The z-index Property

만약 당신이 IE6나 IE7에서 위치지정된 구성요소들에 z-index를 사용한다면, 인덱스 스태킹은 0으로 셋팅 될 것이다. 이는 렌더링 에러를 유발한다. baker라는 사람이 말한 해결책은, 부모 요소에 더 높은 z-index를 주는 것이다. 어떤 경우에는 부모 요소가 position:relative 로 할당되어야 할지도 모른다.

더 읽어볼 것들:

Overflow Bug

Jonathan Snook은 overflow bug에 대한 글을 쓰고 해결했다. 이 버그는 overflow 속성이 부모가 있는 구성요소에 셋팅되고, 그 상대 위치의 자녀(구성요소)가 그것의 높이가 부모보다 클 때 발생한다. IE6와 IE7 모두에서 overflow 선언문을 따르는 대신에, 더 큰 자식 구성 요소가 부모를 흘러 넘칠 것이다. 해결책? 컨테이너에 position:relative 을 추가해라

목록

놀라울 것도 없이, IE에는 리스트에 영향을 주는 수많은 버그가 있다. 다음은 그들 버그와 해결책이다.

Horizontal List Item Width Problem

수평 방향의 메뉴를 구성하기 위해서 리스트 아이템들을 float하거나,

Staircase Bug

Staircase bug는 주로 네비게이션에 사용되는 수직 리스트를 만들려고 할 때,

  • 의 컨텐츠가 Float 될 때 발생한다. 각 아이템들은 수직으로 쌓이거나, 계단형식으로 Float 될 것이다.해결책? 두가지 있다.
  • 에 Float을 적용하거나,
  • 구성요소에 display:inline 을 적용해라.

Vertical Spacing or Whitespace Bug

Block-level의 자식으로

  • 구성요소를 가진 수직 리스트를 만들 때, IE6(IE7의 어떤 경우에)는 리스트 아이템 사이에 수직 공간을 첨가 할 것이다. 이 문제에 대한 복수의 해답이 있다. 먼저 예들을 보자.

Sample HTML

  1. <ul>
  2. <li><a href="#">Item 1</a></li>
  3. <li><a href="#">Item 2</a></li>
  4. <li><a href="#">Item 3</a></li>
  5. </ul>

Sample CSS

  1. ul {margin:0; padding:0; list-style:none;}
  2. li a {display:block; padding:0.5em; background:#ddd;}

The Fixes

Jon Hicks 는 Floating하고 리스트의 anchor tag을 clear하는 해결책을 제시했다.

  1. ul {margin:0; padding:0; list-style:none;}
  2. li a {display:block; padding:0.5em; background:#ddd; float:left; clear:left;}

다른 옵셥으로 anchor tag(또는 block-level 자식에)에 구체적인 높이 또는 폭을 지정함으로써 hasLayout 을 촉발해라.

  1. ul {margin:0; padding:0; list-style:none;}
  2. li a {display:block; padding:0.5em; background:#ddd; width:100%;}
  3. /* height:1%; also works here */
  • 구성요소에 display:inline 를 할당해라.
    1. li {display:inline;}

    또 다른 흥미로운 해결책은 Block-level의 자식의 텍스트의 마지막 문자와 종료 태그 사이에 빈 공간을 넣어라.

    1. <ul>
    2. <li><a href="#">Item 1 </a></li>
    3. <li><a href="#">Item 2 </a></li>
    4. <li><a href="#">Item 3 </a></li>
    5. </ul>

    추가 수정 사항 및 설명:

동작

많은 시나리오들에 있듯이, IE6는 그것이 행동하는 방식에 문제들이 있다. 몇몇 작동 이슈들은 IE6가 오래 되서 그렇다. 왜냐면, 그것은 CSS2를 완벽하게 지원하지 않고, CSS3를 전혀 지원하지 않고, 또는 마소가 단순히 지적 재산권이 있는 표준을 따르기로 결정했기 때문이다.

IE6의 일반적인 동작 문제들을 좀더 살펴 보자.

No Hover State In IE6

href 속성을 갖고 있는 앵커(anchor) 태그, 또는 컨테이너 처럼 행동하는 앵커 태그를 위한 구성요소를 제외하면, IE6는 구성요소를 위한 Hover 상태를 지원하지 않는다. 이는 IE6에서 마우스오버 사용에 심각한 문제를 유발한다. 몇몇 방안들에 대해서 살펴보자.

최선은 미션에 중요한 기능을 수행하기 위해 hover 속성에 의존하지 않는 것이다. 대신에, 이미 기능적이고 접근가능한 피쳐들을 강조하고 확장하기 위해서 그것을 사용하는 것이다.

대부분의 해결책은 일반적으로 자바스크립트 프레임워크나 IE6 fix script를 통해서, MS의 지전 소유권이 있는 CSS 동작 속성을 사용하거나, JavaScript 솔루션을 쓰는 것이다.

Implementing The Canvas Tag In IE

IE7과 IE8을 포함한 그 어떤 버전에서도 HTML5 canvas 태그를 지원하지 않는다. 왜냐면, MS는 자신들이 만든 VML을 강요하기를 좋아하기 때문이다. 그러나, IE에서 canvas 태그를 흉내내기 위한 자바스크립트 솔루션들이 존재한다.

Canvas 해결과 자료들:

IE6 Resize Bug

Emil Stenstrom은 IE6의 크기 조절 버그의 솔루션을 발견했다. 기본적으로, body 요소가 중앙에 있고 레이아웃이 고정되어 있는 페이지에서, 그 안에 있는 상대 위치 구성요소들은, 만약 페이지가 리싸이즈(리프레쉬 말고)되면, 고정으로 될 것이다. Emil의 해결책은 간단하고 훌륭하다. Body에 position:relative 을 추가한다.

자바스크립트

IE6는 또한 자바스크립트를 해석하려고 할 때 무수한 에러로 시달린다. 난 그들 각각의 모든 IE6 자바스크립트 버그를 다룰 수 없다. 그러나 몇몇 일반적인 예를 다루고 어떻게 개선 할 수 있는지 알려주겠다.

Error: Expected Identifier, String, Or Number

IE는 제대로 구성되지 않은 자바스크립트를 잘 견디지 못하고, 배열이나 헤시(hash)의 마지막에 콤마가 붙은 경우, “Expected Identifier, String, Or Number” 라는 에러를 자주 뱉을 것이다. 다른 브라우저들은 좀 더 관대하다. 단지 콤마를 제거하면 그 오류는 사라질 것이다.

IE JavaScript Memory Leaks

IE는 그 자신의 메모리 관리자를 사용하기 때문에, 자바스크립트와 상호작용할 때 메모리 재요청에 실패하면 메모리 leak에 책임이 있다. Douglas Crockford는 IE에서 자바스크립트의 메모리 릭을 방지하는데 탁월한 해결책을 썼다. Hedger Wang이 쓴 다른 글은 필요 없다.

기타

이 장은 앞에서 분류한 내용에 꼭 들어맞지 않는 잡다한 IE6의 버그와 개선에 대한 것이다.

Duplicate Characters Bug

IE6가 Float된 구성요소 안의 display:none 으로 셋팅된 코멘트나 구성요소 같이 숨겨진 구성요소를 만나면, 문자들을 복사할 것이다. 그 문제는 Position is Everything에서 상세하게 다뤄졌다. 그러나 해결책은 간단한다. 숨겨진 구성요소에 선행하는 Float에 display:inline 을 적용해라.

Favicons in IE

Favicon은 Favorites Icon의 준말이다. 그것은 Favorite 폴더안의 북마크된 페이지의 옆에 있는 16*16 픽셀의 이미지를 가르킨다. 그것이 보이게 만드는 두 가지 방법이 있다. 하나는 단순히 이미지를 favison.ico라고 웹의 루트 디렉토리에 저장하는 것이다. IE와 다른 브라우저는 자동으로 이미지를 찾고 뿌려줄 것이다. 두 번째는 HTML 문서의 앞에(이미지를 업로딩 한 후) 다음의 코드를 삽입하는 것이다.

  1. <a href="http://december.com/html/4/element/link.html">link</a> rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />

Favicon 이미지는 캐쉬되고, 브라우저의 캐쉬를 지우고 한번 이상 리프레쉬 하지 않는 이상 바뀌지 않는다. 자동 업데이트를 원하면, 이미지의 expires header를 셋팅해라.

더 읽어볼 것들:

GZip In IE6

XP SP2전의 몇몇 IE6 버전은 GZip 압축이 사용된 파일에서 문제가 있었다. 운좋게도, Seb DugganIE6 GZip bug의 해결책을 ISAPI Rewrite for Apache를 사용하여 발견했다.

Seb의 해결책은 ISAPI Rewrite installation 디렉토리 안의 httpd.conf 파일에 다음 코드를 삽입하는 것이다.

  1. RewriteEngine on
  2. RewriteCond %{HTTP:User-Agent} MSIE\ [56]
  3. RewriteCond %{HTTP:User-Agent} !SV1
  4. RewriteCond %{REQUEST_URI} \.(css|js)$
  5. RewriteHeader Accept-Encoding: .* $1

보너스 자료

문서의 길이가 좀 길긴 해도, 거의 모든 내용을 포괄했다. 당신이 찾는 것을 발견하지 못했다면, 다음의 추가 리소스를 확인해봐라.

출처 : http://www.clearboth.org/

  1. 아직 등록된 댓글이 없습니다.

HTML5 오픈 레퍼런스 eBook 공개 (클리어보스)


어제 날짜로 클리어보스에서 HTML5 오픈 레퍼런스 eBook을 공개하였습니다.
다음에서 주최한 DevOn 2011 에서 후원하여 제작한 인쇄본 책자를 PDF 버전으로 이용할 수 있게 되었네요. 태블릿 PC를 이용해서 시간날때 천천히 읽어보기에 좋을 것 같아 링크했습니다. 슬라이드쉐어로도 보실 수 있습니다.

html4 나 다른 버전에 비해 html5 에 관한 참고자료가 많이 없어 아쉬워하던 찰나, 유용한 자료 공유에 감사드립니다.
clearboth.org 사이트는 알기 쉽게 정리되어 있어 많은 도움이 되는 것 같네요. (북마크추천)





- 2011년 1월 13일 명세 기준으로 제작


구글에서 PDF보기, 내려받기 클릭 

HTML5 Open Reference (20111125/Korean)
View more documents from clearboth 


사이트 링크:http://www.clearboth.org/html5ref_ebook/ 
  1. 아직 등록된 댓글이 없습니다.