私はこのコードを持っています: http://jsfiddle.net/XXu8G/
要素を背骨の周りの中心に揃えたい。Isotope jQuery プラグインには、spine align と呼ばれる同様の機能があります。各面に複数のアイテムを配置したい。
これらは、「左」と「右」の div を分けずにどのように実現できますか?
私はこのコードを持っています: http://jsfiddle.net/XXu8G/
要素を背骨の周りの中心に揃えたい。Isotope jQuery プラグインには、spine align と呼ばれる同様の機能があります。各面に複数のアイテムを配置したい。
これらは、「左」と「右」の div を分けずにどのように実現できますか?
このコードは CSS3 ブラウザーで動作します ( fiddle を参照してください。IE8 以下、およびそれをサポートしていないその他のブラウザーでは、スパイン センターを「ホップ オーバー」する必要があるすべての要素のクラスnth-child
に置き換える必要があります)。私にとって正しく機能させるには、リストの一部にする必要がありました(ただし、以下のオプションの解決策を参照してください)。center-stamp
#container {
width: 380px;
margin: 0 auto;
overflow: hidden;
}
#items li#center-stamp {
width:100px;
height:100px;
background:red;
margin: 0 -240px 0 140px;
}
#items li {
width:50px;
height:50px;
background:#ccc;
margin:10px;
float:left;
display:block;
}
#items li:nth-of-type(4n) {
margin-left: 110px;
}
が純粋に表示用である場合は、そのcenter-stamp
ように疑似要素に移動できます ( fiddle を参照)。
#container {
width: 380px;
margin: 0 auto;
overflow: hidden;
}
#items:before {
content: '';
width:100px;
height:100px;
background:red;
margin: 0 -240px 0 140px;
float: left;
display: block;
}
#items li {
width:50px;
height:50px;
background:#ccc;
margin:10px;
float:left;
display:block;
}
#items li:nth-of-type(4n+3) {
margin-left: 110px;
}
柔軟な幅と要素の動的数という新しい要件については、要素の幅が標準であると仮定した純粋な CSS3 ソリューションがまだあります。これは、クエリ (おそらく、LESS や SCSS などの css プリプロセッサによって生成されるのが最適です) を賢明に使用することによって行われます。@media
クエリの範囲を実際に制限する必要があります。ここにフィドルとそこからのcssコードがあります:
#container {
width: 100%;
overflow: hidden;
}
#center-stamp {
position: fixed;
top: 0;
bottom: 0;
left: 50%;
width: 100px;
margin-left: -50px;
background-color: red;
z-index: -1;
}
#items {
overflow: hidden;
width: 240px;
margin: 0 auto;
}
#items li {
width:50px;
height:50px;
background:#ccc;
margin:10px;
display: block;
float: left;
}
#items > li:nth-child(2n) {
margin-left: 110px;
}
@media all and (min-width: 380px) {
#items {
width: 380px;
}
#items > li:nth-child(2n) {
margin-left: 10px;
}
#items > li:nth-child(4n+3) {
margin-left: 110px;
}
}
@media all and (min-width: 520px) {
#items {
width: 520px;
}
#items > li:nth-child(4n+3) {
margin-left: 10px;
}
#items > li:nth-child(6n+4) {
margin-left: 110px;
}
}
@media all and (min-width: 660px) {
#items {
width: 660px;
}
#items > li:nth-child(6n+4) {
margin-left: 10px;
}
#items > li:nth-child(8n+5) {
margin-left: 110px;
}
}
注:重要なのは、幅を許可されたブロック数にリセットし、以前の幅のnth-child
セレクターをオーバーライドして余白に戻し10px
、新しいカウントを設定することですnth-child
。