負のインデントを使用すると、幅広い可能性が広がり、レイアウトをより普遍的にすることができます。 すべてを理解するために、ギャラリーのようなブロックで満たされた小さなコンテナを作成しましょう。

たとえば、私は最も困難な状況を選択しようとしました。 この場合、最初の行の上部のインデントだけでなく、最初の列の左側のインデントも無効にし、divコンテナーのブロックを3列にきれいに収める必要があります。
HTML:
<div>
-
<ul>
-
<li> 1</li>
-
<li> 2</li>
-
<li> 3</li>
-
<li> 4</li>
-
<li> 5</li>
-
<li> 6</li>
-
<li> 7</li>
-
<li> 8</li>
-
</ul>
-
</div>
CSS:
-
div {
-
border: 2px solid #CCC;
-
overflow: hidden;
-
width: 640px;
-
}
-
ul {
-
margin: -20px 0 0 -20px;
-
overflow: hidden;
-
padding: 0;
-
}
-
ul li {
-
background: #C06;
-
float: left;
-
height: 100px;
-
list-style: none;
-
margin: 20px 0 0 20px;
-
width: 200px;
-
}
-
*html ul {
-
width: 660px;
-
}
-
*html ul li {
-
display: inline;
-
}
問題は解決されたので、ここで主要なポイントに焦点を当てましょう。 中心点は、ulタグの負のマージンプロパティ、およびdivタグの非表示値を持つoverflowプロパティです。 彼らの助けを借りて、ulブロックをdivブロックに対して20pxだけ左上に移動し、オーバーフローの助けを借りて、不要なインデントを切り取ります。 これら2つのプロパティはメソッドの本質です。

しかし、常に1つまたは3つも存在するため、これはulタグのオーバーフロープロパティとIE 6.0ブラウザーの2つの個別のプロパティです。 最初のプロパティは、親ブロックのfloatプロパティの効果を中和するために使用されます。 IE 6.0では、IEが子ブロックに対して自分で計算できないため、ulブロックのwidthプロパティと、floatプロパティがブロックに適用されたときにインデントの2倍化を排除するdisplayプロパティを個別に使用しました。
提示された例はブラウザでテストされました:IE 6.0 +、Firefox 2.0、Opera 9.0、Safari 2.0+。 繰り返しになりますが、この手法は普遍的であり、必要に応じてさまざまなバリエーションであらゆる場所に適用できます。 実験して、経験を共有してください:)
例