2011-05-02 8 views
1

스타일 시트를 쓰고 있는데, 상대 레이아웃으로 컨테이너 내에 가로로 세 개의 요소 (너비 = 33 %)를 표시하려고합니다. 다음은 코드입니다 :인라인 블록 요소가 예상대로 표시되지 않습니다.

#container 
{ 
    margin:auto; 
    width:85%; 
    padding:0; 
} 
#element 
{ 
    display:inline-block; 
    width:33.3%; 
    margin-left:0; 
    margin-right:0; 
    border:0px; 
    text-align:center; 
    } 

이해하지 않는 이유 세 가지 요소 :

<div id="container"> 
<div id="element">hi</div> 
<div id="element">every</div> 
<div id="element">one</div> 
</div> 

나는 그들이 동일한에 그려진 것이라고 생각하면서 마지막 요소는, 처음 두 아래에 표시됩니다 선. 여백, 패딩 또는 경계선이 없습니다. 너비를 32 %로 설정하면 전체 브라우저 창에서 동일한 행 (작동)이지만 브라우저 창 너비를 줄이면 마지막 요소가 새 줄에 나옵니다. 왜 이런 일이 발생하는지 아는 사람이 있습니까?

+0

모든 브라우저에서 사용할 수 있습니까? – MeLight

+1

요소에 id 대신 클래스 이름을 사용하십시오. ID는 문서에서 고유해야합니다. 문제를 해결하지 않을 것입니다. –

+0

@MeLight mmm FF 3.6 및 rekonq – Archimedis

답변

3

이들은 인라인 블록이므로 문자처럼 레이아웃됩니다. 그리고 당신의 경우에는 그들 사이에 공백이있어서 공백이 렌더링의 인라인 블록 사이의 줄에 하나의 공백이됩니다. 당신은 당신이 그들에 국경을 두는 경우에 이것을 볼 수있다. 따라서이 세 공간 모두가 차지하는 공간은 "컨테이너 폭의 99.9 %와 컨테이너 글꼴의 두 공간 넓이"가됩니다. 32 %로 줄이면 두 칸이 컨테이너 너비의 4 % 이상으로 합쳐지면 줄 바꿈이 생깁니다 (컨테이너 폭이 작은 경우에만 발생합니다).

실제로 인라인 블록이 서로 솟아 오르도록하려면 그 사이의 공백을 제거하십시오.

+0

좋아요! 렌더링 된 다른 것이 있다는 것을 알았지 만 나는 그것을 볼 수 없었습니다! 정말로, 정말 고마워! – Archimedis

+0

대단히 환영합니다! –

0

요소를 클래스 (thanx Jarrett)로 만들고 해당 클래스에 float:left 스타일을 추가하십시오.

.element 
{ 
    display:inline-block; 
    width:33.3%; 
    margin-left:0; 
    margin-right:0; 
    float:left; 
    border:0px; 
    text-align:center; 
    } 


<div id="container"> 
<div class="element">hi</div> 
<div class="element">every</div> 
<div class="element">one</div> 
</div> 
+0

OMG, id/class 실수 (어쩌면 xD를 잠자기해야 함)를 유감스럽게 생각합니다. 어쨌든 작동합니다, 고마워요! =) 왜 float 속성을 사용하지 않으면 작동하지 않는지 설명 할 수 있습니까? – Archimedis

+1

플로팅을 할 경우 "인라인 블록"을 사용할 필요가 없습니다. 플로팅을 사용하면 디스플레이가 강제로 "차단"됩니다.하지만 더 중요한 것은 물어 본 질문을하지 않는 것입니다. _why_ 인라인 블록 동작은 그대로입니다. ;) –

+0

플로팅주의하십시오. 컨테이너가 부동 상태가 아닌 경우 요소 클래스가 컨테이너 상자 밖으로 나옵니다. 둘레에 테두리를 놓으면 클래스 요소와 일치하도록 컨테이너의 높이가 확장되지 않습니다. 부유물은 불쾌해서주의해서 중첩해야합니다. – robx

0

용기의 너비로 arround를 연주하는 것이 좋습니다. 나를 위해 일하는 팁은 그들에게 줄을 제공하고 있습니다. 아래는 내 기부입니다 :

http://jsfiddle.net/8dWhF/

관련 문제