負のインデント-汎用性への道

同じインデントと共通コンテナを持つ一連のブロックで、最初または最後のブロックにインデントがないか、他のブロックと異なる場合によく遭遇します。 しばらくの間、この「問題」を解決するために、ネガティブインデントを使用する手法を習得するまで、最初または最後のクラスのように「クランチ」を使用しました。





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



ブロック充填コンテナ



たとえば、私は最も困難な状況を選択しようとしました。 この場合、最初の行の上部のインデントだけでなく、最初の列の左側のインデントも無効にし、divコンテナーのブロックを3列にきれいに収める必要があります。



HTML:


  1. <div>



  2. <ul>



  3. <li> 1</li>



  4. <li> 2</li>



  5. <li> 3</li>



  6. <li> 4</li>



  7. <li> 5</li>



  8. <li> 6</li>



  9. <li> 7</li>



  10. <li> 8</li>



  11. </ul>



  12. </div>







CSS:


  1. div {



  2. border: 2px solid #CCC;



  3. overflow: hidden;



  4. width: 640px;



  5. }



  6. ul {



  7. margin: -20px 0 0 -20px;



  8. overflow: hidden;



  9. padding: 0;



  10. }



  11. ul li {



  12. background: #C06;



  13. float: left;



  14. height: 100px;



  15. list-style: none;



  16. margin: 20px 0 0 20px;



  17. width: 200px;



  18. }



  19. *html ul {



  20. width: 660px;



  21. }



  22. *html ul li {



  23. display: inline;



  24. }







問題は解決されたので、ここで主要なポイントに焦点を当てましょう。 中心点は、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+。 繰り返しになりますが、この手法は普遍的であり、必要に応じてさまざまなバリエーションであらゆる場所に適用できます。 実験して、経験を共有してください:)






All Articles