2014-10-06 9 views
0

IE7에 문제가 있습니다. 인라인 블록 컨테이너 안의 블록 요소가 연속 폭에 맞게 늘어나지 않습니다.IE7의 인라인 블록 컨테이너 안에 100 % 너비 블록

코드 :

여기
<div class="a"> 
    <div class="b"></div> 
    <div class="c"></div> 
</div> 

.a { 
    border: 5px solid blue; 
    display: inline-block; 
    *display: inline; 
    zoom: 1; 
} 
.b { 
    width: 500px; 
    height: 10px; 
    background: green; 
} 
.c { 
    height: 10px; 
    background: red; 
} 

가 원하는 동작이 다른 브라우저에서 볼 수있다 : 여기 enter image description here

내가 IE7에있어 무엇 : enter image description here

예 : http://jsfiddle.net/Lnfwezm4/5/

직접 링크 : http://fiddle.jshell.net/Lnfwezm4/5/show/

어떻게하면 IE7에서 부모 너비에 맞게 빨간색 블록을 만들 수 있습니까 (IE6도 훌륭합니다)? 그 해결됩니다 .A 어떤 폭을 추가

+0

디스플레이 추가 : 블록; .b 및 .c 및 너비 : 500px. .c는 작동합니까? – Monte

+0

@ 몬테, 그럴 수 없어. 그것이 문제이다. – panfil

답변

1

:

.a { 
    border: 5px solid blue; 
    display: inline-block; *display: inline; zoom: 1; 
    width: 500px; 
} 

는의 후드 아래에 무슨 일이 일어나고 있는지 보자. 부모 요소의 폭의 기본 너비가 100 % 인 블록 요소가 있습니다. .c의 부모 요소는 폭이 없으며 (암시 적으로 100 % 또는 다른 값을 설정하는) 폭이없는 .a입니다. 폭은 하위에 따라 다르지만 ... 정의되지 않은 값의 100 %는 정의되지 않습니다.이 경우 , 0px; (의도적으로 조금 단순화했습니다)

내 생각에 IE7이 .c의 너비를 계산하는 방법을 알 수있는 유일한 방법은 .a에 약간의 너비를주는 것입니다 (반드시 고정되어 있지 않아도되고 % 또는 다른 단위).

어떤 이유로 든 .a에 너비를 줄 수없는 경우 왜, 무엇을하려고하는지 알려주세요. 약간 다른 마크 업으로 달성 할 수있는 좋은 기회가 있습니다.

+0

고정 폭을 ".a"로 설정할 수 없습니다. 필자는 컨테이너의 내용을 폭, 즉 500px, ".b"블록의 너비로 확장하려고했습니다. 같은 컨테이너에있는 다른 블록 요소가 너비의 100 %까지 늘어나기를 바랍니다. IE7이 아닌 다른 브라우저에서이 동작을 보았습니다. 나는 IE가 왜 그런 식으로 폭을 계산하는지 이해할 수 있지만이 경우 다른 브라우저와 같이 작동시키는 방법을 모른다. 또한 컨테이너에 ".c"블록 이상이있을 수 있으므로 positioinig를 사용할 수 없으므로 ".b"와 함께 정상적인 흐름에서 필요합니다. js없이 만들 수있는 방법이 있습니까? – panfil