Dynamically resized, 100% width grid with 1px borders, centered content, variable columns.
A Pen by Madison Dickson on CodePen.
| <h3>Dynamically sized, 100% width square grid with 1px border, left-hanging final row</h3> | |
| <p>Note: the borders are colored to show where they are sourced from.</p> | |
| <p>Quirk: because the leftmost border is sourced from the parent-container, the grid inner container will always be one border-width thinner than the height. At 1px borders, it should be imperceptible</p> | |
| <h4>Static declared columns</h4> | |
| <p>Change the # of columns: | |
| <button onclick="changegrid(4)">4</button> | |
| <button onclick="changegrid(5)">5</button> | |
| <button onclick="changegrid(6)">6</button> | |
| <button onclick="changegrid(8)">8</button> | |
| <button onclick="changegrid(10)">10</button> | |
| <button onclick="changegrid(12)">12</button> | |
| <button onclick="changegrid(16)">16</button> | |
| </p> | |
| <div> | |
| </div> | |
| <div class="container g12" id="static"> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><i>I</i></div> | |
| <div class="grid"><b>B</b></div> | |
| <div class="grid"><smaller>s</smaller></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| </div> | |
| <h4>Responsive re-ordering:</h4> | |
| <div class="container auto"> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><i>I</i></div> | |
| <div class="grid"><b>B</b></div> | |
| <div class="grid"><smaller>s</smaller></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| <div class="grid"><span>S</span></div> | |
| <div class="grid"><div>D</div></div> | |
| </div> | |
Dynamically resized, 100% width grid with 1px borders, centered content, variable columns.
A Pen by Madison Dickson on CodePen.
| function changegrid(n) { | |
| $("#static").removeClass("g16 g15 g14 g13 g12 g11 g10 g9 g8 g7 g6 g5 g4 g3 g2 g1"); | |
| $("#static").addClass("g" + n); | |
| } |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| $grid-columns: 16; | |
| $grid-ratio:1/1; /*width to height ratio: 16/9, 4/3, 1/1, etc*/ | |
| $border-width:1px; | |
| @for $i from 1 through $grid-columns { | |
| .g#{$i} { | |
| .grid{width:100%/$i;padding-bottom:100%/($i*$grid-ratio)} | |
| .grid:nth-child(-n+#{$i}){border-top:$border-width solid purple;} | |
| } | |
| } | |
| /** Example output for 16 grid columns: ** | |
| .g16 .grid{width:6.25%;padding-bottom:6.25%;} | |
| .g16 .grid:nth-child(-n+16){border-top:1px solid purple;} | |
| */ | |
| $breaks: 300px 400px 500px 600px 700px 800px 900px 1000px; | |
| $break-diff: 2; | |
| //default is 16 columns | |
| .auto { .grid{width:6.25%;padding-bottom:6.25%} | |
| .grid:nth-child(-n+16){border-top:$border-width solid purple;} | |
| } | |
| $len : length($breaks)-1; | |
| @for $i from $len through 1 { | |
| $max: nth($breaks,$i+1); | |
| $min: nth($breaks,$i)+1px; | |
| @media(max-width: $max) and (min-width: $min ){ | |
| .auto { | |
| .grid{ | |
| width:100%/($i*$break-diff); | |
| padding-bottom:100%/($i*$break-diff*$grid-ratio) | |
| } | |
| .grid:nth-child(-n+#{$i*$break-diff}){ | |
| border-top:$border-width solid purple; | |
| } | |
| .grid:not(:nth-child(-n+#{$i*$break-diff})){ | |
| border-top:none; | |
| } | |
| } | |
| } | |
| } | |
| /* Bootstrap-like automatic clearfix for the grid container*/ | |
| .container:after{ | |
| content:" "; | |
| display:block; | |
| clear:both; | |
| } | |
| .container{ | |
| width:100%; | |
| border-left:$border-width solid red; | |
| background:lightgray; | |
| } | |
| .container .grid{ | |
| display:inline-block; | |
| border-right:$border-width solid green; | |
| border-bottom:$border-width solid green; | |
| background:white; | |
| position:relative; | |
| margin:0px; | |
| float:left; | |
| box-sizing: border-box; | |
| } | |
| .container .grid > *{ | |
| position: absolute; | |
| top:0; | |
| bottom:0; | |
| left:0; | |
| right:0; | |
| text-align:center; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size:40px; | |
| overflow:hidden; | |
| } |
http://codepen.io/mix3d/pen/VvGGrv