■やりたい事
色を管理するツールを作っているのだが、1個目のpalette-blockのpalette-itemでは白と黒、2つ目のpalette-blockのpalette-itemでは赤と青と表示できるようにしたい。
要するに
1つ目のpalette-blockのpalette-itemだけを取得して黒としろ
2つ目のpalette-blockのpalette-itemだけを取得して赤と青
というように変えたい。
■問題点
palette-itemこれが色の部分なのだがどうしても全ての要素を取得してしまいundefaindと言うようになってしまう。
■行動した事
単純にpalette-item1、palette-item12とクラスをつけて区別をしたが、これが100個とかなるとcssの記述がやばいことになるので断念しました。
html
1<div class="palette-box"> 2 3 <div class="palette-block"> 4 <div class="palette-item__wrapper"> 5 <div class="palette-item1">aa</div> 6 <div class="palette-item1">aa</div> 7 <div class="palette-item1">aa</div> 8 <div class="palette-item1">aa</div> 9 </div> 10 <form action=""> 11 <button class="likes"><i class="fas fa-heart"></i></button> 12 </form> 13 </div> 14 15 <div class="palette-block"> 16 <div class="palette-item__wrapper"> 17 <div class="palette-item2"></div> 18 <div class="palette-item2"></div> 19 <div class="palette-item2"></div> 20 <div class="palette-item2"></div> 21 </div> 22 <form action=""> 23 <button class="likes"><i class="fas fa-heart"></i></button> 24 </form> 25 </div> 26 27 <div class="palette-block"> 28 <div class="palette-item__wrapper"> 29 <div class="palette-item3"></div> 30 <div class="palette-item3"></div> 31 <div class="palette-item3"></div> 32 <div class="palette-item3"></div> 33 </div> 34 <form action=""> 35 <button class="likes"><i class="fas fa-heart"></i></button> 36 </form> 37 </div> 38 39 <div class="palette-block"> 40 <div class="palette-item__wrapper"> 41 <div class="palette-item4"></div> 42 <div class="palette-item4"></div> 43 <div class="palette-item4"></div> 44 <div class="palette-item4"></div> 45 </div> 46 <form action=""> 47 <button class="likes"><i class="fas fa-heart"></i></button> 48 </form> 49 </div> 50 51 </div> 52
css
1.palette-box{ 2 display: flex; 3} 4 5.palette-block{ 6 width: calc(100%/4); 7} 8 9.palette-item__wrapper{ 10 display: flex; 11 flex: 1; 12} 13 14.palette-item__wrapper .palette-item1, 15.palette-item2, 16.palette-item3{ 17 width: 50%; 18 height: 5rem; 19}
js
1function GeneratePaletteItemColor() { 2 const paletteBlock = document.querySelectorAll('.palette-block'); 3 if (paletteBlock[0]) { 4 const pale = document.querySelectorAll('.palette-item1'); 5 //chroma.scaleで色を生成してます。 6 const Colors = chroma.scale(['white', 'black']).colors(4); 7 pale.forEach((div, index) => { 8 const color = Colors[index]; 9 div.style.backgroundColor = color; 10 }); 11 } 12 if(paletteBlock[2]){ 13 const pale = document.querySelectorAll('.palette-item2'); 14 const Colors = chroma.scale(['red', 'blue']).colors(4); 15 pale.forEach((div, index) => { 16 const color = Colors[index]; 17 div.style.backgroundColor = color; 18 }); 19 } 20 21 if(paletteBlock[3]){ 22 const pale = document.querySelectorAll('.palette-item3'); 23 const Colors = chroma.scale(['#ea7070', '#2694ab']).colors(4); 24 pale.forEach((div, index) => { 25 const color = Colors[index]; 26 div.style.backgroundColor = color; 27 }); 28 } 29}
回答1件
あなたの回答
tips
プレビュー