3

クラスとともに4行に表示されるリストがありdivs、チェッカーボードの背景スタイルを作成したいと思います。つまり、次のようになります。

  • 奇数と偶数に異なる背景色を適用しますdivs
  • 各行の奇数偶数を偶数奇数に切り替えます

私はこれを試しました

.boxwrapper:nth-child(2n-1), .boxwrapper:nth-child(2n) {
    background:#ff0000;
}
.boxwrapper:nth-child(4n-2), .boxwrapper:nth-child(4n-3) {
    background:#0000ff;
}

奇数偶数divでも問題なく動作しますが、4アイテムごとに切り替えることはできません。私は4n-1、4n + 1のものについて頭を悩ませています、もし私がその正しい出来上がりを得ることができれば!

結果は次のようになります。

ここに画像の説明を入力してください

4

4 に答える 4

7

デモ

http://jsfiddle.net/mykhA/1/

HTML

<div class="container">
    <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
    <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
    <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
    <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
</div>​

CSS

.container {
    width: 100px;
    height: 100px;
}

.line {
    width: 100px;
    height: 25px;
}

.box {
    width: 25px;
    height: 25px;
    float: left;
}

.box:nth-child(8n+2) {
    background-color: red;
}

.box:nth-child(8n+4) {
    background-color: red;
}
.box:nth-child(8n+5) {
    background-color: red;
}

.box:nth-child(8n+7) {
    background-color: red;
}

.box:nth-child(8n+1) {
    background-color: blue;
}

.box:nth-child(8n+3) {
    background-color: blue;
}

.box:nth-child(8n+6) {
    background-color: blue;
}

.box:nth-child(8n) {
    background-color: blue;
}
​

</ p>

于 2012-09-24T07:54:39.920 に答える
0

@Miszyのソリューションの直後に、ページに表示されるdivの数に関係なく同じことを行うjQueryソリューションも見つかりました。

$(document).ready(function() {
    $(.boxwrapper:nth-child(8n+3), .boxwrapper:nth-child(8n+5), .boxwrapper:nth-child(8n+8), .boxwrapper:nth-child(8n+10)").css({"background-color":"red"});
});

どちらでも問題なく動作します。

于 2012-09-24T08:09:38.397 に答える
0

また、4つのセレクターのみを使用して背景色を切り替えることもできます。(@MichałMiszczyszyn=>より短いアプローチに似た答え)

繰り返しパターンは4要素の2行になります。選択は、:nth-child(8n)実際に作業する基本パターンです。例:

:nth-child(8n-1),
:nth-child(8n-3),
:nth-child(8n-6),
:nth-child(8n-12){
background:/* switch to the other value here */;
}

.square {
  width:25%;
  margin:auto;
  background:turquoise;
  counter-reset:div;
  overflow:hidden; /* to deal with float */
}

.square div {
  float:left;
  width:25%;
  text-align:center;
  background:green;
}
.square div:nth-child(8n-1),
.square div:nth-child(8n-3),
.square div:nth-child(8n-6),
.square div:nth-child(8n-12){
background:tomato;
}

/* demo purpose */
body:hover div div {
background:initial;/* resets to none to show parents background */
}
.square div:before {
  content:'';
  padding-top:100%;
  display:inline-block;
  vertical-align:middle;
}
.square div:after {
  counter-increment:div;
  content:counter(div);
  display:inline-block;
  vertical-align:middle;
  font-size:2vw;
}
<div class="square">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>
<hr/>
<div class="square">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

パターンは8要素ごとに繰り返されます。

background-color正方形の頭文字を省略して、親の背景を使用できることに注意してください。

于 2017-10-18T09:40:44.007 に答える
0

これは、リーニュごとに1からラインごとに5までのcssチェッカーボード(ダミエ)のレスポンシブバージョンです。

http://jsfiddle.net/Choufourax/pb09o5fa/1/

CSS

div.grid {
  display: grid;
}
div.grid > div {
    color: red;
    height: 200px;
    background-color: gray;
    /* comment these 3 lines if you don't need to center content */
    display: flex;
    align-items: center;
    justify-content: center;
}
/* Default => 1 per ligne */
@media only screen and (max-width: 600px)   {
  
  div.grid > div:nth-child(odd) {
    background-color: black;
  }
}

/* 50%  => 2 per ligne */
@media only screen and (max-width: 840px) and (min-width: 600px)  {
  div.grid {
   grid-template-columns: 1fr 1fr; 
  }
  div.grid > div:nth-child(4n+1), div.grid > div:nth-child(4n+4) {
    background-color: black;
  }
}

/* 33%  => 3 per ligne */
@media only screen and (max-width: 1024px) and (min-width: 840px)  {
  div.grid {
   grid-template-columns: 1fr 1fr 1fr; 
  }
  div.grid > div:nth-child(6n+1), div.grid > div:nth-child(6n+3), div.grid > div:nth-child(6n+5)  {
    background-color: black;
  }
}

/* 25% => 4 per ligne */ 
@media only screen and (max-width: 1140px) and (min-width: 1024px)  {
  div.grid {
   grid-template-columns: 1fr 1fr 1fr 1fr; 
  }
  div.grid > div:nth-child(8n+1), div.grid > div:nth-child(8n+3), div.grid > div:nth-child(8n+6), div.grid > div:nth-child(8n+8) {
    background-color: black;
  }
}

/* 20% => 5 per ligne */ 
@media only screen and (min-width: 1141px)  {
  div.grid {
   grid-template-columns: 1fr 1fr 1fr 1fr 1fr; 
  }
  div.grid > div:nth-child(10n+1), div.grid > div:nth-child(10n+3), div.grid > div:nth-child(10n+5), div.grid > div:nth-child(10n+7), div.grid > div:nth-child(10n+9) {
    background-color: black;
  }
}

HTML:

<div class="grid">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
</div>
于 2021-07-20T08:55:31.033 に答える