自分の勉強用にグリッドレイアウトを実装してみます。
実装方法はいくつかあると思いますが、今回はdisplay: inline-block;を使ってみます。
12分割のグリッド
よくある12分割のグリッドを実装してみます。
HTML
<div class="grid"> <div class="grid-item grid-item_w6"> <div>.grid-item_w6</div> </div> <div class="grid-item grid-item_w6"> <div>.grid-item_w6</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w3"> <div>.grid-item_w3</div> </div> <div class="grid-item grid-item_w3"> <div>.grid-item_w3</div> </div> <div class="grid-item grid-item_w3"> <div>.grid-item_w3</div> </div> <div class="grid-item grid-item_w3"> <div>.grid-item_w3</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w2"> <div>.grid-item_w2</div> </div> <div class="grid-item grid-item_w5"> <div>.grid-item_w5</div> </div> <div class="grid-item grid-item_w5"> <div>.grid-item_w5</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
5・7・8・9・10分割のグリッド
5・7・8・9・10分割のグリッドを実装してみます。
HTML
<div class="grid5"> <div class="grid-item"> <div>.grid5</div> </div> <div class="grid-item"> <div>.grid5</div> </div> <div class="grid-item"> <div>.grid5</div> </div> <div class="grid-item"> <div>.grid5</div> </div> <div class="grid-item"> <div>.grid5</div> </div> </div> <div class="grid7"> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> <div class="grid-item"> <div>.grid7</div> </div> </div> <div class="grid8"> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> <div class="grid-item"> <div>.grid8</div> </div> </div> <div class="grid9"> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> <div class="grid-item"> <div>.grid9</div> </div> </div> <div class="grid10"> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> <div class="grid-item"> <div>.grid10</div> </div> </div>
CSS
/* 5分割のgrid */
.grid5 {
font-size: 0;
}
.grid5 .grid-item {
display: inline-block;
width: 20%;
box-sizing: border-box;
font-size: 16px;
}
/* 7分割のgrid */
.grid7 {
font-size: 0;
}
.grid7 .grid-item {
display: inline-block;
width: 14.286%;
box-sizing: border-box;
font-size: 16px;
}
/* 8分割のgrid */
.grid8 {
font-size: 0;
}
.grid8 .grid-item {
display: inline-block;
width: 12.5%;
box-sizing: border-box;
font-size: 16px;
}
/* 9分割のgrid */
.grid9 {
font-size: 0;
}
.grid9 .grid-item {
display: inline-block;
width: 11.111%;
box-sizing: border-box;
font-size: 16px;
}
/* 10分割のgrid */
.grid10 {
font-size: 0;
}
.grid10 .grid-item {
display: inline-block;
width: 10%;
box-sizing: border-box;
font-size: 16px;
}
マージンの設定
12分割のグリッド要素にマージンを設定できるようにしてみます。
HTML
<div class="grid"> <div class="grid-item grid-item_w5"> <div>.grid-item_w5</div> </div> <div class="grid-item grid-item_w5 grid-item_ml2"> <div>.grid-item_w5 + .grid-item_ml2</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w8"> <div>.grid-item_w8</div> </div> <div class="grid-item grid-item_w3 grid-item_ml1"> <div>.grid-item_w3 + .grid-item_ml1</div> </div> </div> <div class="grid"> <div class="grid-item grid-item_w3"> <div>.grid-item_w3</div> </div> <div class="grid-item grid-item_w5 grid-item_ml1"> <div>.grid-item_w5 + .grid-item_ml1</div> </div> <div class="grid-item grid-item_w2 grid-item_ml1"> <div>.grid-item_w2 + .grid-item_ml1</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
.grid-item_ml12 {
margin-left: 100%;
}
.grid-item_ml11 {
margin-left: 91.667%;
}
.grid-item_ml10 {
margin-left: 83.333%;
}
.grid-item_ml9 {
margin-left: 75%;
}
.grid-item_ml8 {
margin-left: 66.667%;
}
.grid-item_ml7 {
margin-left: 58.333%;
}
.grid-item_ml6 {
margin-left: 50%;
}
.grid-item_ml5 {
margin-left: 41.667%;
}
.grid-item_ml4 {
margin-left: 33.333%;
}
.grid-item_ml3 {
margin-left: 25%;
}
.grid-item_ml2 {
margin-left: 16.667%;
}
.grid-item_ml1 {
margin-left: 8.3333%;
}
ガター
3パターンのガターを設定できるようにしてみます。
HTML
<div class="grid grid-gutter_s"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> </div> <div class="grid grid-gutter_m"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> </div> <div class="grid grid-gutter_l"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
.grid-gutter_s > .grid-item {
padding-left: 5px;
padding-right: 5px;
}
.grid-gutter_m > .grid-item {
padding-left: 10px;
padding-right: 10px;
}
.grid-gutter_l > .grid-item {
padding-left: 15px;
padding-right: 15px;
}
ガターの左右の余白削除
ガター設定時に左右の余白をなくすようにしてみます。
HTML
<div class="grid grid-gutter_s"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_s + .grid-item_w4</div> </div> </div> <div class="grid grid-gutter_m"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_m + .grid-item_w4</div> </div> </div> <div class="grid grid-gutter_l"> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-gutter_l + .grid-item_w4</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
.grid-gutter_s {
margin-left: -10px;
}
.grid-gutter_s > .grid-item {
padding-left: 10px;
}
.grid-gutter_m {
margin-left: -20px;
}
.grid-gutter_m > .grid-item {
padding-left: 20px;
}
.grid-gutter_l {
margin-left: -30px;
}
.grid-gutter_l > .grid-item {
padding-left: 30px;
}
上下位置の設定
グリッド要素の上下位置を設定できるようにしてみます。
HTML
<div class="grid grid-vertical_t"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4<br />.grid-item_w4<br />.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div> <div class="grid grid-vertical_m"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4<br />.grid-item_w4<br />.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div> <div class="grid grid-vertical_b"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4<br />.grid-item_w4<br />.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
.grid-vertical_t .grid-item {
vertical-align: top;
}
.grid-vertical_m .grid-item {
vertical-align: middle;
}
.grid-vertical_b .grid-item {
vertical-align: bottom;
}
左右の並びの設定
グリッド要素の左右の並びを設定できるようにしてみます。
HTML
<div class="grid grid-align_l"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div> <div class="grid grid-align_c"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div> <div class="grid grid-align_r"> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> <div class="grid-item grid-item_w4"> <div>.grid-item_w4</div> </div> </div>
CSS
/* 12分割のgrid */
.grid {
font-size: 0;
}
.grid-item {
display: inline-block;
width: 100%;
box-sizing: border-box;
font-size: 16px;
}
.grid-item_w12 {
width: 100%;
}
.grid-item_w11 {
width: 91.667%;
}
.grid-item_w10 {
width: 83.333%;
}
.grid-item_w9 {
width: 75%;
}
.grid-item_w8 {
width: 66.667%;
}
.grid-item_w7 {
width: 58.333%;
}
.grid-item_w6 {
width: 50%;
}
.grid-item_w5 {
width: 41.667%;
}
.grid-item_w4 {
width: 33.333%;
}
.grid-item_w3 {
width: 25%;
}
.grid-item_w2 {
width: 16.667%;
}
.grid-item_w1 {
width: 8.3333%;
}
.grid-align_l {
text-align: left;
}
.grid-align_c {
text-align: center;
}
.grid-align_r {
text-align: right;
}
コメントが承認されるまで時間がかかります。