少し問題があります。 FireFox 3.6を使用しており、次のDOM構造があります。
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
そして、次のCSS:
.view-row {
width:100%;
display:table-row;
}
.view-name {
display: table-cell;
float:right;
}
.view-type {
display: table-cell;
}
display:table-row
を取り外すと、view-row
が100%の幅で正しく表示されます。戻すと縮小します。私はこれをJS Binに載せました:
どうしたの?
display:table-row
などを使用している場合は、適切なマークアップが必要です。これには、格納テーブルが含まれます。それなしでは、元の質問は基本的に次の同等の悪いマークアップを提供します。
<tr style="width:100%">
<td>Type</td>
<td style="float:right">Name</td>
</tr>
上記の表はどこにありますか?どこからでも行を作成することはできません(trはtable
、thead
、tbody
などに含まれている必要があります)
代わりに、display:table
を使用して外側の要素を追加し、含まれる要素に100%の幅を付けます。 2つの内側のセルは自動的に50/50になり、テキストを2番目のセルの右に揃えます。テーブル要素を持つfloats
を忘れてください。多くの頭痛の種になります。
マークアップ:
<div class="view-table">
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
</div>
CSS:
.view-table
{
display:table;
width:100%;
}
.view-row,
{
display:table-row;
}
.view-row > div
{
display: table-cell;
}
.view-name
{
text-align:right;
}
テスト済みの回答:
.view-row cssで、次を変更します。
display:table-row;
に:
display:table
および「float」を取り除く。すべてが期待どおりに機能します。
コメントで提案されているように、ラッピングテーブルは必要ありません。 CSSでは、暗黙的なツリー構造のレベル(この場合は行)を省略することができます。コードが機能しない理由は、「幅」はテーブル行レベルではなくテーブルレベルでしか解釈できないためです。 「テーブル」があり、そのすぐ下に「テーブルセル」がある場合、それらは暗黙的に連続して座っていると解釈されます。
作業例:
<div class="view">
<div>Type</div>
<div>Name</div>
</div>
cSSを使用:
.view {
width:100%;
display:table;
}
.view > div {
width:50%;
display: table-cell;
}
CSS3仕様によると、レイアウトをテーブルスタイル要素でラップする必要はありません。ブラウザーは、含まれている要素が存在しない場合、その要素の存在を推測します。
.view-type
クラスfloat:left;
を与えるか、float:right;
の.view-name
を削除します
編集: div <div class="view-row">
を別のdivでラップします(例:<div class="table">
)
そして、次のcssを設定します。
.table {
display:table;
width:100%;}
正しい結果を得るには、テーブル構造を使用する必要があります。
テーブル内にテーブルセルを直接ネストできます。あなたには、テーブルがあります。最初のテーブル行を開始しても機能しません。このHTMLで試してください:
<html>
<head>
<style type="text/css">
.table {
display: table;
width: 100%;
}
.tr {
display: table-row;
width: 100%;
}
.td {
display: table-cell;
}
</style>
</head>
<body>
<div class="table">
<div class="tr">
<div class="td">
X
</div>
<div class="td">
X
</div>
<div class="td">
X
</div>
</div>
</div>
<div class="tr">
<div class="td">
X
</div>
<div class="td">
X
</div>
<div class="td">
X
</div>
</div>
<div class="table">
<div class="td">
X
</div>
<div class="td">
X
</div>
<div class="td">
X
</div>
</div>
</body>
</html>