2012-07-20 20 views
12

次のHTMLでは、div .leftと.rightの高さが異なります。高さを定義することなく、両方のdivを同じ高さにすることは可能ですか?私はdisplay:tableを使ってみましたが動作しません。2つのdivを表示テーブルと同じ高さにするCSS

HTML:

<div class="wrap"> 

    <div class="left"> 
     Lorem  
    </div> 

    <div class="right"> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    </div> 

</div> 

はCSS:

.wrap{ 
    overflow:hidden; 
    width:250px; 
    display: table; 
    border-collapse: collapse; 
} 


.left{ 
    width:100px; 
    float:left; 
    display: table-cell; 
    border-bottom:1px solid green;  
} 


.right{ 
    width:150px; 
    float:left; 
    border-bottom:1px solid red; 
    display: table-cell;  
} 

jsfiddle: http://jsfiddle.net/fJbTX/1/

答えて

19

を取り出した:

table-cellは、<td> HTML要素

のように振る舞います

これは、display: table-rowの親として、tdにはtrの親要素が必要なため、(これは私の推論を検証していませんが)必要であることを示しています。

.wrap{ 
    overflow:hidden; 
    width:250px; 
    display: table; 
    border-collapse: collapse; 
} 

.row { 
    display: table-row; 
} 
.left{ 
    width: 50%; 
    display: table-cell; 
    background-color: #0f0; 
} 


.right{ 
    width: 50%; 
    background-color: #f00; 
    display: table-cell;  
}​ 

JS Fiddle demo

参考文献:

+2

'display:table-row'でdivを指定する必要はありません。ブラウザはそれを追加します。 http://stackoverflow.com/questions/22179502/is-it-valid-to-use-css-table-cell-with-no-table-row – lefoy

+0

あなたのスタイルシートのどこかでfloatが追加されている場合。 .leftと.rigth divsの 'float:none'プロパティを追加して、そのフロートの効果をキャンセルすることができます。 – Mohsin

4

このような何か?

http://jsfiddle.net/fJbTX/3/

私は、ドキュメントの通常の流れのうちの要素をとる、floatを削除し、またtable-rowとして機能するように、別のラッパー要素に追加フロートプロパティに

+2

フロートを取り除くと私のために固定されました。面白いのは、変更を有効にするためにページをリロードする必要があったことです。フロートを削除するためにFirebugを使用して、「セル」が同じ高さにならないようにしました。 – SeanKendle

関連する問題