2009-08-07 2 views
8

EDIT이 없습니다 10px :이 내용은 IE8에서 일어나는, 그것은 여기, IE7, 파이어 폭스 등 모든IE8 - 여백 - 상단 컨테이너 : 더 여유

첫 번째 오페라에서 잘 작동 내가 포토샵에서 만든 사진입니다 내 문제를 설명하기 : http://richardknop.com/pict.jpg

이제 내 문제에 대해 알고 있어야합니다.

<div class="left"> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
</div> 
<div class="right"> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
</div> 
<div class="clear"></div> 
<div class="box"> 
    // 
    // NOW THIS BOX HAS NO TOP MARGIN 
    // 
</div> 
<div class="box"> 
    // box content 
</div> 

그리고 CSS 스타일은 다음과 같이 이동 : 여기에 내가 사용하고 마크 업의 단순화 된 버전은 (내가 가장 관련이없는 내용을 왼쪽)입니다 내가 왼쪽으로 모든 irreevant 스타일과 같은 한

분명히
.clear { 
    clear: both; 
} 
.left { 
    float: left; 
} 
.right { 
    float: right; 
} 
.box { 
    overflow: auto; 
    margin-top: 10px; 
} 

테두리, 배경색 및 이미지, 글꼴 크기 등을 지정합니다.

어디에서 문제가 발생할 수 있으십니까?

+0

DOCTYPE이 설정되어 있습니까 (예 : IE8 표준 모드로 실행 중이거나 버크?) – scunliffe

+0

예, 있습니다 :

+0

귀하의 문제를 자세히 검토하지는 않았지만 여백 축소 예 : http://www.andybudd.com/archives/2003/11/no_margin_for_error/ – ChrisW

답변

9

padding-top: 10px이 작동하는지 확인하십시오. 여백이 페이지 상단에서 벗어나려고하는 것일 수 있습니다.

+0

상자에 이미 배경색이 있고 이미 패딩이 있기 때문에 10px 패딩을 사용할 수 없습니다 : 10px –

+6

필자는 ' '과 같은 필러를 추가해보십시오. 그 이전 버전에서는 버그가 있음을 기억합니다. – Justin

+0

 을 추가하면 높이를 0으로 추가해야했습니다. .clear 클래스에 –

1

지우기 div를 닫습니다.

<div class="clear"></div> 
+0

그게 문제지만 문제점은 아닙니다. 상자 div에'clear' 클래스를 추가하면 이전의 내용도 지워집니다. – Justin

+0

여기를 닫은 것을 잊어 버렸습니다. 소스 코드가 닫혀 있습니다. 내 게시물을 편집했습니다. –

1

나는이 접근법을 얻지 못했다. <div>을 오른쪽 클래스로 래핑하고 또 다른 <div>에 넣고 overflow: hidden, width: 100%을 적용하여 플로트 된 요소 아래의 요소가 올바르게 표시되도록 할 수 있습니다.

+0

네,하지만 최소한의 마크 업을 사용하고 절대적으로 필요한 많은 div 만 사용하는 것을 선호합니다. 이렇게하면 스타일링에 필요하지 않은 의미 적 의미가없는 다른 요소가 추가됩니다. –

+1

@ 리차드, 나는

 
가 정확히 동일하다고 말할 것입니다. 개인적으로 HTML이 더보기에 좋기 때문에 개인적으로 오버 플로우 솔루션을 선택합니다. 그러나 그것은 나다. – dalizard

1

enter code here 오버 플로우가있는 컨테이너를 사용하여 플로팅 된 div 주위를 감추고 지워진 div를 제거하십시오.

<div id="container"> 
     <div class="left">  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div> 
     </div> 
     <div class="right">  
      <div class="box">  // box content right </div>  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div> 
     </div> 
    </div> 
    <div class="box"> // // NOW THIS BOX HAS NO TOP MARGIN //</div> 
<div class="box"> // box content</div> 

그리고 CSS

#container { width: 100%; overflow: hidden; } 

(I가 확인할 수없는, 그래서 미안 해요, 내가 테스트를 위해 내 작업 기계에 IE7을 왼쪽)

+0

및 오버플로 추가 : 숨김 및 작동합니다 :-) – dalizard

+0

바로, 그 일을하는 과정에서 날 잡았어! – ScottE

6

나는 이것이 IE8 버그라고 생각합니다. 떠 다니는 왼쪽 및 오른쪽 div의 형제 요소와 관련됩니다. 삭제 div가 있거나 없으면, 최종 unfloated 요소는 IE8에서 위쪽 여백을 잃습니다.

우리는이 테스트를했습니다, 그리고 유일한 IE8 잘못을 가져옵니다

http://www.inventpartners.com/content/ie8_margin_top_bug

우리는 또한 3 개 솔루션을 함께했다.

+0

좋은 조사. 까다로운 주제는 내부 여백과 함께 축소 된 여백입니다. 귀하의 예에서는 부동 div가 아닌 3 개의 모든 마진이 붕괴되므로 세 번째 마진의 상단 여백은 손실되지 않습니다. 그것은 첫 번째와 붕괴되었습니다. 명확한 속성이 없으면 IE8의 동작은 정확하며 다른 브라우저는 동의합니다. 명확한 속성을 추가해야하는 것은 명확하지 않습니다. Opera의 동작을 확인하십시오. BTW, 데모 용으로 두 개의 수레가 필요하지 않습니다. –

+0

흥미 롭습니다. 나는 그런 생각을하지 못했습니다. IE8은 분명 게코보다 마진 붕괴에 훨씬 더 엄격 해지고 있습니다. IE8에서 더 나은 (다르게) 렌더링되는 게코의 테이블 꽤 많은 마진 붕괴 불일치가있을 것으로 예상됩니다. 앞으로 몇 달! –

+0

안녕하세요 buti-oxa -이 문제에 대한 분석을 자세히 설명하는 기사에 각주를 추가했습니다. 희망은 그것이 ok 다. 네가 나를 바꿔달라고하면 알려줘. –

0

나는 IE8을 가지고 있지 않지만 ... 하단 div에 모두 추가하고 상단 여백 중 하나에 하단 여백을 추가 하시겠습니까? 나는 여분 div없이 동일한 효력을 달성 할 아주 확실하다.

1

비슷한 문제가 있으며 Matt Bradley가 제공하는 솔루션이 저에게 효과적이지 않습니다 (하지만 어쨌든 게시 해 주셔서 감사합니다). 나는 margin-top : hp 요소에 10px를 갖고 싶었다.

내가 만든 해결책은 h1 요소에 position : relative, top : 10px 및 margin-top : 0px를 추가하는 것입니다.