익스플로러 IE의 margin 값 문제
Wednesday, June 22, 2005 
고질적인 IE의 문제 계속됩니다. 3px 의 문제 입니다. 무언가 padding 값도 잡은거 같은데 IE에서 이상하게 깨지는 경우가 있습니다. 이것은 전 포스팅에 다룬 PADDING 의 DIV 안쪽의 문제가 아닌 바깥쪽의 문제가 되는데요, FLOAT 값과 만나는 경우 입니다. 저도 이 페이지를 디자인 하는중에 많이 격은 문제 인데요. 특히 2개 이상의 DIV들이 하나의 DIV 안에 들어가 있는 경우, WIDTH 가 넉넉하지 않으면 곧바로 밑으로 내려가게 되는 문제입니다. 그래서 제 SIDEBAR 도 수도없이 내려갔다 올라갔다를 반복했었습니다. 너비의 여유를 두면서 고치긴 했지만 여러 포럼과 CSS Hacks를 참고하면 float을 적용한쪽에서 3px 정도의 공간이 생겨버린다고 하더군요. 실제로 적용하고 돌려본 결과 정확하게 3px이 에러가 납니다.
예를들어보겠습니다. #SIDEBAR와 #CONTENT 이 2개가 서로 좌우로 정렬되고 이 둘은 #WRAP 안에 들어갑니다.
#CONTENT {width: 200px;float: left;}
#SIDEBAR { width: 100px; }
그러니 총 300px의 값이 #WRAP 의 너비가 되야하지만 그렇게 될 경우에 문제가 생겨버립니다.

이것을 고치는 법은 IE가 읽을때에만 float이 들어간 곳에 margin값을 -3px 로 해주면 되겠네요. (물론. 너비를 늘려주면 고쳐집니다. ㅡㅡ;;;)
즉, #CONTENT {
float: left;
width: 200px;
float: left;
margin: 0;
padding: 0;
}
#SIDEBAR {
width: 100px;
margin: 0;
padding: 0;
}
* html #CONTENT {
margin-right: -3px;
}
*html #SIDEBAR {
margin-left: 0px;
}
* html #CONTENT 에서 margin-right: -3px 을 주었습니다. * html은 무엇인지 아시죠? 이곳을 참고하시기 바랍니다.
물론. * html 말고도 IE 에만 적용하는 다른 방법들이 있습니다만, 나중에 나누기로 하겠습니다.
첨가: #SIDEBAR의 float 값을 right 으로 주면서 정렬값으로 문제를 잡을수 있겠습니다. jay님께서 상기시켜 주셨네요. 물론 2개의 element 만이 정렬을 한다는 가정한에서 입니다. 2개이상 float:left 를 주면서 right 값을 주어야 하는 경우가 생기겠지만, TJpark님께서 코멘트 남겨주셨듯이 absolute 값을 포지션에 주어서 쓸수도 있겠습니다.
실제 복잡한 레이아웃의 서비스를 코딩할경우에는 1,2px로 아쉬울경우가 생길거같습니다
그래서 인데..
contents부분은 그냥 float 형태로 두고..
sidebar같은경우는 float 대신 position:absolute로 우측에 정렬시키는건 어떨까요?
겹칠지언정.. 내려가지는 않을거 같아서여 ^^;; -TJpark
한가지더
그리고 또하나의 margin 에러가 있습니다. margin과 float이 같은방향으로 설정될때에 2배의 margin 이 생기게 되는데요, 신현석님께서 잘 설명해 놓으셨네요. ^^














TJpark.com
June 22nd, 2005 at 2:28 pm 인용
실제 복잡한 레이아웃의 서비스를 코딩할경우에는 1,2px로 아쉬울경우가 생길거같습니다
그래서 인데..
contents부분은 그냥 float 형태로 두고..
sidebar같은경우는 float 대신 position:absolute로 우측에 정렬시키는건 어떨까요?
겹칠지언정.. 내려가지는 않을거 같아서여 ^^;;
[Reply]
일모리
June 22nd, 2005 at 2:36 pm 인용
그 후에 밑에 오는것은 CLEAR 값을 준다 는거군요. 그것도 생각해 볼만 하군요!
아,, 그렇게 되면 absolute 때문에 그 밑에 오는것을 덮는 경우가 생길꺼 같습니다.
####%%%
####%%%
====%%%
이렇게 % 부분이 늘어나면 그 밑에 부분이 밑으로 밀려야 할텐데 겹쳐 버리지 않을까요
[Reply]
tux
June 22nd, 2005 at 3:59 pm 인용
아.. 전 한 블럭에 2개 블럭 넣을땐 float:left 와 float:right 로 써줘서 저런 문제가 있는지 모르고 있엇네요. 좋은 정보!!!
[Reply]
A2
June 22nd, 2005 at 4:13 pm 인용
저는 초기에 float 속성을 많이 사용했는데 지금은 position 속성으로 띄워놓습니다. 갤러리등과 같이 무엇인가 주르륵 배열할 때를 제외하고는 float 속성을 써야할 경우가 없더군요. 제가 float를 멀리하게 된 이유중 하나가 바로 익스입니다. 익스에서는 float속성을 가진 객체와 position속성을 가진 객체를 되도록 같은 레이어 안에 같이 두지 않는 것이 좋습니다. 익스가 너무나 많은 버그를 일으키거든요.
[Reply]
신현석
June 22nd, 2005 at 5:05 pm 인용
#sidebar 도 float 시키면 되지 않나요?
그리고 3px 버그는 저 경우 보다도 #sidebar 가 #content 보다 아래로 길어질 경우, #sidebar 의 아래로 내려온 부분의 text 들은 버그가 안생겨서 #sidebar 안의 텍스트 왼쪽 인덴트가 #content 의 높이 위와 아래가 어긋나는데 더 큰 문제가 있습니다. (설명이 이상한가..ㅎㅎ)
그 문제는 height: 1% 로 해결이 됩니다. 전체적으로 3px 밀어 줍니다. 좋지 않죠! -o-;
A2/ 동감합니다. 외국글들은 float 많이 쓰는데 저는 position 을 더 좋아해요. ㅎㅎ
[Reply]
# k u k i e » 오늘의 삽질보고서
June 22nd, 2005 at 10:39 pm 인용
[…] contents에는 float값을 지정해주지 않으면 둘 사이에 여백이 생긴다. 일몰님이 포스팅 한 걸 보니 3px의 여백이 생긴다고 하던데, 내가 본게 이게 아닌가 […]
yser
June 23rd, 2005 at 4:11 am 인용
으으… 정말 익스 css 버그는 때때로 사람 미치게 해요. 이리조리 요리조리 건드리다가 사람 열받게 하고.. -_-; 참 아래 페이지 보시고 증상 아시면 좀 가르쳐주세요.
http://theyell.org/yser/
익스 6 에서 보면, Comment 에 링크가 되어 있는데 마우스 커서 올리면 오른쪽 사이드 바가 그 밑으로 뭉텅 날라갑니다. 악 -_- 파폭은 안그렇거든요. 이상하게 코멘트 쪽이 그렇더군요.. 아직 원인 파악을 못했습니다. 이건 무슨 버그인가요? orz
[Reply]
일모리
June 23rd, 2005 at 12:53 pm 인용
tux// 네 ㅎㅎ IE 는 버그투성,,, ㅎ
A2님과 신현석님께서는 position을 많이 쓰시는군요. 저는 가끔 씁니다만 float 값을 자주 씁니다. 헌데 position 값을 준것이 길어질때면 밑에 있는 div 를 가리지 않는지요? 예를들어 footer가 가려지지 않을까요. 물론 CONTENT 가 SIDEBAR 보다 작아진다면 말이죠. 이부분은 Jay님께서도 말씀하신 문제이긴 합니다.
yser// 보았는데 별로,, 에러가 안나네요? ㅡㅜ 제가 잘못보고 있는건가요? 이미 고치신게 아니실까요? ㅎㅎ yser님 블로그툴 만드시면 멋지게 스킨하나 만들어 드릴께요 ㅎㅎ
[Reply]
kingori
June 23rd, 2005 at 1:30 pm 인용
정말.. 이게 뭔짓이랍니까.
IE 나빠요!
왜 작업하는 사람들이 w\idth 이런것을 쓰고 있어야 하는지
[Reply]
일모리
June 23rd, 2005 at 1:40 pm 인용
ㅡㅜ 저도 왜 그래야하는지 모르겠습니다…
지,, 진정하세요. 요즘 쓰는 브라우저중에 젤 오래된 브라우저니까 봐주세요 흑…
[Reply]
N.com
June 23rd, 2005 at 7:08 pm 인용
하하하 코멘트들 너무 웃겨요;;
저는 지금 CSS기반 쇼핑몰을 만들고 있습니다.
쇼핑몰이 나름대로 종합쇼핑몰 스케일이라 말씀하신 문제를 거의 다 겪어봤는데, 혼자 삽질하면서 해결하느라 얼마나 힘들었는지ㅠㅠ
CSS로 코딩을 시작한 후 프로그래머 분에게 자료를 넘겨드릴 땐 꼭 뭐하는 놈인지 설명을 해드려야 하고… 프로그램에 적용되면 뭐가 왕창 깨져서 또 손봐드려야 하고…
IE에 별 감정이 없었는데 이젠 정말 저주스럽게 보입니다:twisted:
그래도 만들고 보니 홈페이지가 완전 날아댕겨서 너무 좋네요…;
[Reply]
신현석
June 23rd, 2005 at 11:37 pm 인용
우오..일몰님 블로그 파워가 대단하군요.
방문자수 확늘었음… -o-;
[Reply]
일모리
June 24th, 2005 at 12:09 am 인용
N.com// IE 가 미워지긴 합니다. ㅡㅜ IE 가 주는 버그가 너무 심하면 @import 방법으로 ie 값들만 조절하는 css 를 읽어들이는 방법을 써보세요. 혹시나 모르신다면 제가 나중에 포스팅 해보겠습니다. ^^
신현석//그,,, 그런거 같습니다. 제가 쓰는통계가 정확한게 아닌듯 싶어서 그냥 방문자수는 신경안쓰고 혹시나 해서 리퍼러등은 보고 있습니다. 늘어나긴 한거같습니다. 저뿐만이 아닌 요즘 표준에 관심 가지신분들이 전체적으로 방문자분들이 는거 같아요. 그만큼 표준에 관심들이 가신다는 거니 개인적으로 보다는 전체적으로 볼때 좋은것으로 생각하고 있네요.
[Reply]
A2
June 24th, 2005 at 2:53 pm 인용
N.com// 프로그래머분하고 잘 안맞는가 보네요?
저는 디자이너가 적용할 class명과 id를 가르쳐 주면
디자인이 어떻게 나오든 신경쓰지 않고 원하는 class명과
id로 코딩해서 넘깁니다. 그러면 디자이너가 미리 만들어
놓은 css와 결합해서 페이지가 완성되죠.
프로그래머가 신경써야 할 것이 훨씬 줄었습니다.
[Reply]
N.com
June 24th, 2005 at 7:09 pm 인용
A2님// 그럴 수 밖에 없는게 여기선 CSS를 저밖에 모르거든요.
다들 공부를 안하십니다ㅠㅠ
그냥 제가 드리는거 고대로 수정하면 별 문제 없는데 막 거기서 자르고 붙여넣고 하실 때 맨날 테이블만 보다가 이걸 보니 많이 생소한가 봐요.
그래도 최근에 와선 많이 나아졌어요. 후딱후딱 잘 하시더라구요.
[Reply]
일모리
June 25th, 2005 at 5:13 am 인용
점차 나아지시겠죠 ^^;;
나중에는 그럴수밖에 없는 상황들이 올터이니 그 전에 점점 바뀌어 가면 되겠죠 뭐
[Reply]
myshin
January 12th, 2006 at 6:18 pm 인용
위와 같이 float 속성이 있는 DIV 태그 사이에 주석문이 2개이상 들어가면 원치않는 공간이 생깁니다. 아마 이글에서 말씀하신 3px 정도의 공간이 생기나 봅니다. 아무튼 아래로 밀려나버렸습니다.
이렇게 주석문은 1개이하로 하니 해결이 되네요~
[Reply]