個別のポジショニング
この 6 つの列に対してのみこのレイアウトを作成する必要がある場合は、それらを個別に配置するだけでid
済み<div>
ます#
。
拡張不可能なソリューション [デモ]
このソリューションは 6 列のレイアウトで機能しますが、それを拡張してさらに列を追加する場合は、CSS に.box:nth-child(8) {left: 150px;}
.
.container {
position: relative;
}
.box {
width: 50px;
height: 50px;
float: left;
}
.box:nth-child(2n) {
position: absolute;
top: 50px;
}
.box:nth-child(2) {left: 0px;}
.box:nth-child(4) {left: 50px;}
.box:nth-child(6) {left: 100px;}
柔軟性の向上 [デモ]
Itayが述べたように、プロパティを使用するとこのソリューションを改善できるtransform
ため、次のように CSS を変更できます。
.box:nth-child(4) {transform: translate(100%);}
.box:nth-child(6) {transform: translate(200%);}
top
プロパティを手動で変更する必要があります。また、必要に応じて、-webkit-
またはのようなベンダー プレフィックスを使用することを忘れないでください。-ms-
拡張可能なソリューション [デモ]
このソリューションも CSS3nth-child(n)
セレクターを使用しますが、ここでは相対的な配置とmargin-left
プロパティのトリックを使用します。このソリューションのソース コードは非常にコンパクトで読みやすく、拡張可能であるため、.es にさらにbox
es を追加する場合、CSS セレクターを追加する必要はありませんcontainer
。HTML に新しい行を追加するだけで、チャームとして機能します。 .
.box {
width: 50px;
height: 50px;
float: left;
position: relative;
}
.box:nth-child(2n) {
top: 50px;
margin-left: -50px;
}
柔軟性の向上 [デモ]
transform
プロパティを使用して、このソリューションも改善できることを忘れないでください。
.box:nth-child(2n) {
transform: translate(0, 100%);
margin-left: -50px;
}
margin-left
ただし、手動でプロパティを設定する必要があります。CSS で動的に変更する方法が見つからない場合は、JavaScript/jQuery を使用できます。
CSS3 列
CSS3 にはこれが新機能として含まれているため、カスタム列を簡単に作成できます。詳細については、この記事を参照してください。また、Itay's answerも参照してください。