Skip to content Skip to sidebar Skip to footer

4x4 Grid Of Squares That Scale Up To A Maximum Width

How should I edit the CSS and/or HTML so that these squares fit to a particular maximum width, while maintaining the 4x4 square structure? Right now, it resizes to the width of the

Solution 1:

How about, you know, CSS grid? You can use the width and height to adjust the whole shebang's size.

#playGrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr 1fr;
  gap: 15px;
  align-content: stretch;
  width: 50vw;
  height: 50vw;
}
#playGriddiv {
  background: #CCC;
  color: white;
}
<divid="playGrid"class="w"><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>11</div><div>12</div><div>13</div><div>14</div><div>15</div><div>16</div></div>

Solution 2:

You can leverage CSS Grid Layout to define your grid, and then bound the height and width of the section to 100vh:

#playGridSection {
  display: grid;
  grid-template-columns: repeat(4, 25%);
  grid-template-rows: repeat(4, 25%);
  height: 100vh;
  width: 100vh;
  margin-right: auto;
  margin-left: auto;
}
sectiondiv {
  background: #CCC;
  color:white;
  align-self: stretch;
  justify-self: stretch;
  margin: 1vh;
}
<divid="playGrid"><sectionid="playGridSection"><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></section></div>

Solution 3:

You may relay on flex and a pseudo to stretch your element to a square boxe.

Here is a basic example. (You should also clarify what kind of content should be standing inside and which kind of layout you need, so we can tune/update HTML(the content to put inside) & CSS according to your real expected result, it could be like a sudoku grid ? Responsive grid of squares within a responsive grid of squares )

body {margin:0;}
.w {}

section {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  padding: 20px;
  max-width: 100vmin;
  margin: auto;
}

sectiondiv {
  background: #CCC;
  min-width: 21%;
  /* cannot be more than 4 on a row */flex-grow: 1;
  /* stretch their width evenly */margin: 1vmin;
}

sectiondiv:before { 
/* note, you need to stretch only one per row and 
the selector can be also : section div:nth-child(4n):before  */content: '';
  padding-top: 100%;
  /* stretch height using width as a reference (padding/margin units in % ) */float: left;
  /* let it on the side to add content .. aside */
}
<divid="playGrid"class="w"><section><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></section></div>

Post a Comment for "4x4 Grid Of Squares That Scale Up To A Maximum Width"