You can do this:
.wrapper { display: inline-grid; grid-template-columns: 50px 50px 50px 50px; border-bottom: 1px solid black; border-left: 1px solid black; } .wrapper > div { padding: 15px; text-align: center; border-top: 1px solid black; border-right: 1px solid black; } body { background:pink; }
<div class="wrapper"> <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>
Another idea is to use a gradient to fill in the spaces, as shown below:
.wrapper { display: inline-grid; grid-template-columns: 50px 50px 50px 50px; grid-gap:1px; background: linear-gradient(#000,#000) center/100% 1px no-repeat, repeating-linear-gradient(to right, transparent ,transparent 50px, #000 50px,#000 51px); border:1px solid; } .wrapper > div { padding: 15px; text-align: center; } body { background:pink; }
<div class="wrapper"> <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>
You can also customize the original solution to make it more flexible, and it will work with any number of elements in a row.
Run the code below on the full page and resize the window:
.wrapper { display: grid; max-width:800px; grid-template-columns: repeat(auto-fill,minmax(100px,1fr)); border-top: 1px solid black; border-left: 1px solid black; } .wrapper > div { padding: 15px; text-align: center; border-bottom: 1px solid black; border-right: 1px solid black; } body { background:pink; }
<div class="wrapper"> <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>
source share