#javascript #jquery #css #reactjs
#javascript #jquery #css #reactjs
Вопрос:
Я хотел бы знать, как я могу создать эту сетку в ReactJS или vanila javascript?
Я пытался использовать n-й дочерний элемент, но он работает только с нечетными или четными числами или конкретным дочерним элементом.
Комментарии:
Ответ №1:
Вы можете сделать что-то подобное, это будет работать для 3×5, но вы можете раскрасить, как хотите, для этого вам нужен стиль div в виде сетки, чтобы получить их в таком порядке.
const createTable = (blue,yellow,red)=>{
let x = 3;
let y = 5;
const grid = document.getElementsByClassName('mygrid')[0]
for(let i = 0;i<x;i ){
var div = document.createElement('div')
div.classList.add('createdDiv')
grid.appendChild(div)
for(let z=1;z<y;z ){
var div = document.createElement('div')
div.classList.add('createdDiv')
grid.appendChild(div)
}
}
let allDivs = document.getElementsByClassName('createdDiv');
[...allDivs].forEach((el,i)=>{
if((i 1)%x==1amp;amp;(i 1)/x >= y-blue){
el.classList.toggle('blue')
}else if( (i 1)%x==2 amp;amp; ((i 1)/x) >= y-yellow ){
el.classList.toggle('yellow')
}else if((i 1)%x==0 amp;amp; ((i 1)/x)> Math.abs(red-y)){
el.classList.toggle('red')
}
})
}
createTable(4,1,3)
.mygrid{
display:grid;
grid-template-columns: 33.3% 33.3% 33.3%;
}
.mygrid > div{
border:1px solid #666;
padding:20px;
text-align:center;
}
.blue{
background-color:#33f;
}
.yellow{
background-color:yellow;
}
.red{
background-color:red;
}
<div class="mygrid">
</div>
Комментарии:
1. Попробуйте мой новый ответ, в котором вы можете выбрать по номеру нужного дочернего элемента…
Ответ №2:
Как насчет этого?
document.querySelector(".mygrid > div:nth-child(2)").style.backgroundColor = "red";
document.querySelector(".mygrid > div:nth-child(4)").style.backgroundColor = "blue";
.mygrid{
display:grid;
grid-template-columns: 33.3% 33.3% 33.3%;
}
.mygrid > div{
border:1px solid #666;
padding:20px;
text-align:center;
}
.blue{
background-color:#33f;
}
.yellow{
background-color:yellow;
}
.red{
background-color:red;
}
<div class="mygrid">
<div style="grid-column:1/-1;">1</div>
<div >2</div>
<div class="">3</div>
<div class="">4</div>
<div class="">5</div>
<div class="">6</div>
<div class="">7</div>
<div class="e">8</div>
<div class="">9</div>
<div class="">10</div>
<div class="">11</div>
<div class="">12</div>
<div class="">13</div>
</div>
Комментарии:
1. спасибо, но он должен быть динамическим, чтобы в столбце 1 (синий) кто-то мог выбрать 2 вместо 4. ваше решение заключается в жестком кодировании класса