2012-10-18 5 views
12

私は、ネストされたグリッド要素の左と右の溝を排除するために、行の負のマージンを利用するグリッドシステムでテーブルセル要素を使用しようとしています。これはフローティングとインラインブロック要素の罰金に動作しますが、display: tableを持つ要素、負の左マージンを尊重しつつ、負の右マージンを無視:えっ、テーブル要素に負の右マージンを使用できませんか?

Table with negative right margin

奇妙なの?簡単なデモンストレーション:http://jsfiddle.net/57FAN/1/

すべてのブラウザで同じように実装されているようですが、残念なことに何か案は?

P.S.フレックスボックスが標準化されるまでレイアウト用のtable- *要素に関する議論を延期しましょう。

+0

レイアウトのためのテーブルを使用する理由がないだけのようなレイアウトのためにテーブルをめぐる議論を延期する理由はありません。 – Kyle

+3

@KyleSevenoaks OPはテーブルを使用していない、彼はテーブルの表示プロパティを使用しています。規則は表のデータを表現するために設計されたものであり、表以外の要素を表のように見せることはできないため、レイアウト用の表タグを使用しないことです。 – cimmanon

+0

ああ、私はそれをキャッチしませんでした。もちろん、ディスプレイの使用:テーブル;プロパティは完全に正当な(皮肉ではない)です。それをクリアしていただきありがとうございます。 – Kyle

答えて

6

テーブルは負のマージンを無視しませんが、幅は100%で、左側に5pxシフトします。灰色の領域を完全に埋めるには "100%+ 2 * 5px"が必要です。

行には幅がありません。したがって、使用できる幅全体が使用されます。

あなたは

.row { 
    margin: 0 -5px; 
    width: 100%; 
} 

を使用する場合は、幅が

+0

ああ、あなたは正しいです。私はその幅を考慮しませんでした:ブロックレベルの要素のautoは常にwidth:100%と同じではありません。 –

0

あなたのコード同等であることがわかりますがmarginよりpaddingプロパティのを持っています。そのように見える。ここでいくつかのコードを修正しました。

Fiddle DEMO

+0

ありがとうございました。セルバですが、マージンとパディングはグリッドシステムの一部であり、削除することはできません。 –

関連する問題