2014-07-23 1 views
1

this JSFiddle을 참조하십시오. 여기에 코드의 관련 발췌 :divs 대 테이블의 기준선 (세로 맞춤 목적의 경우)

<div class="container"> 
    <div class="box"> 
     <div>fg</div> 
    </div>hj</div> 

<div class="container"> 
    <div class="box"> 
     <table><tr><td> 
      fg 
     </td></tr></table> 
    </div>hj</div> 

CSS :

div.box { 
    display:inline-block; 
} 

마지막 예에서 못생긴 틈이 동안 첫 번째 예는, 아니 "센더 격차"가없는 방법을 참조하십시오.

이것은 div의 기준선 (또는 div의 임의의 중첩)이 포함 된 텍스트의 기준선으로 정의 되었기 때문에 나타납니다. 그러나 표의 기준선은 표의 맨 아래에 있습니다.

이 동작은 div 및 테이블뿐만 아니라 모든 요소에 대해 지정됩니까? 어디에? 구성 가능합니까?

+0

인라인 스타일없이 바이올린을 다시 작성하십시오. – DRD

+0

나는 그렇게했다. – exclipy

답변

0

이것은 테이블 속성 때문입니다. 이 시도 :

table { 
    display: inline-block; 
    border: 1px solid blue; 
} 
2

당신이 다른 한쪽 블록 내용에 인라인 내용으로 시험을 할 경우 발생하는 차이가 있습니다.

테이블을 인라인 테이블로 설정하고 수직 정렬을 상단 또는 하단으로 재설정하여 기준선에 서 있지 않습니다.

DEMO

div, table, tr, td { 
    border: 0; 
    padding: 0; 
    margin: 0; 
} 
div.container { 
    border: 1px solid green; 
} 
div.box { 
    display:inline-block; 
    width:50px; 
    border:1px solid red; 
    padding:0; 
    margin:0; 
    background: #fee; 
} 
table { 
    display:inline-table;/* keep its table-layout properties intact */ 
    width:100%;/* fill all width avalaible at least */ 
    border: 1px solid blue; 
    vertical-align:top; /* or bottom to avoid gap under baseline*/ 
} 
+0

흥미 롭; 나는 디스플레이에 대해 몰랐다 : 인라인 테이블. 인라인 테이블의 기준선은 인라인 블록 요소와 다릅니다 (예 : 세로 정렬의 경우 : 인라인 블록은 인라인 테이블이 아닌 반면에 디 센더 갭을 도입합니다). 하지만 내 질문은 :이 모든 것들이 어디에 지정되어 있습니까? – exclipy

+0

@exclipy 간단한 인라인 블록과 테이블 인라인 테이블은 다음과 같은 더 많은 태그와 레이아웃 속성을 포함합니다 : border-collapse; 테두리 간격, 내부 및 외부 패딩 및 레이아웃 일부 리셋과 테스트는 스팬 인라인 블록과 테이블 인라인 테이블을 제외하고 기본적으로 동일한 규칙을 사용합니다 : http://jsfiddle.net/UmLa4/8/ 이것에 대해 더 알고 싶다면, 인라인 블록/인라인 테이블, 레이아웃, 테두리, 여백에 대한 W3C def ... :( –