可変グリッドレイアウトとは、ブラウザの幅に応じてコンテンツのレイアウトを調整し整列してくれる仕様のことを指します。有名なサイトで言えば「pinterest」などがそうですが、この可変型のグリッドを簡単に実現できるjQueryプラグイン「Masonry」をご紹介します。
まずは、この可変グリッドを採用しているサイトを見てみましょう。
D&DEPARTMENT PROJECT
SUPER ME INC.
東京 デザイン事務所 サガ
ブラウザの横幅を変える度にカラム数が変化し、コンテンツが移動しながら再配置される仕様になっています。
▼それでは、実際に作りながら見ていきましょう。
まずは、本家「Masonry」より「masonry.pkgd.min.js」をダウンロードしてください。
Masonryとは…「れんが・石組・積石」などの意味があるようです。グリッドレイアウトがレンガを積み上げたようなビジュアルになっているため、このような名前が付いているようですね。
実際にサンプルを用意しましたので確認していきましょう。
jQueryと「masonry.pkgd.min.js」を読み込む
1 2 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" src="js/masonry.pkgd.min.js"></script> |
JavaScriptを記述
1 2 3 4 5 6 7 8 9 |
<script type="text/javascript"> $(function(){ $('#container').masonry({ isAnimated: true, itemSelector: '.item', isFitWidth: true }); }); </script> |
HTMLを記述
1 2 3 4 5 6 7 |
<ul id="container" class="motion"> <li class="item"> <div><a href="#"><img src="images/img1.jpg" /></a></div> <p class="cap"><a href="#">CAPTION</a></p> <p class="des">discription</p> </li> </ul> |
CSSを記述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#wrapper { width:100%; margin: 0; padding: 0; position:relative; } header { background: url("../images/vertical_cloth.png"); padding:10px; color:#fff; text-align:center; font-family: 'Alegreya SC', serif; font-weight: 900; } #container { background: url("../images/retina_wood.png"); padding:5px; margin: 0 auto; } #container:after { content: "."; display: block; clear: both; height: 0; visibility: hidden; } .item { margin: 8px; width: 300px; padding: 8px; box-shadow:0 2px 5px #aaa; background:#FFF; color:#666; float: left; border-radius:5px; border-bottom:5px solid #3a3a3a; } .item img { width: 100%; } .item img:hover { opacity: 0.8; } .item div{ border-bottom: 1px dashed #ccc; padding-bottom:5px; } .cap { margin: 10px 0 5px; font-weight:bold; font-size: 16px; } .des { font-size:12px; } #footer { margin: 0; text-align: center; padding:10px; background: #363636; background: url(../images/vertical_cloth.png); color:#FFF; font-family: 'Alegreya SC', serif; font-weight: 900; } |
以上で完成です。
その他にも、いくつかのオプションがあるのでカスタマイズしてみてください。
オプション
●itemSelector
処理対象となる要素のclass名を指定する
●isAnimated
ウィンドウサイズを変更した際のレイアウト変更時のアニメーションの可否。デフォルトはfalse
●isFitWidth
containerのサイズを列幅に合わせて変更するかどうか。
●columnWidth
一列の幅を指定
●gutterWidth
要素間の幅の指定
●isResizable
ブラウザのウィンドウサイズが変わったときに並び替えをするかどうか。デフォルトはtrue
●isRTL
左上から右下に視線を動かすようなレイアウト対応にするかどうか。デフォルトはfalse
●animationOptions
アニメーションオプションを設定
詳しくは、本サイトのオプションをご確認ください。