Windowサイズに応じて動的にブロック要素を配置!Isotopeを簡単実装。

f:id:fushimik:20130301183854j:plainMasonryレイアウトを実現するJSライブラリ、Isotopeを超簡単に実装してみよう。
実はいろいろと高機能。でも今回はほんとに基本的だけど感動ものの簡単実装!

まずは、ライブラリをダウンロード

Isotope
http://isotope.metafizzy.co/
jquery.isotope.min.js)

一番シンプルな構成として、3つのファイルを同じフォルダに準備します。
テスト用のサンプル、全文掲載です。

index.html

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
	<meta charset="UTF-8">
	<title>Isotope-test</title>
	<link rel="stylesheet" href="style.css">
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
	<script src="jquery.isotope.min.js"></script>
	<script>
	$(function(){
	$('#wrap').isotope({
			// options
			itemSelector : '.box',
			layoutMode : 'masonry'
		});
	});
	</script>
</head>
<body>
	<header><h1>これは、Isotopeのテストです</h1></header>
	<div id="wrap">
		<div class="box">1</div>
		<div class="box">2</div>
		<div class="box">3</div>
		<div class="box big">4</div>
		<div class="box">5</div>
		<div class="box">6</div>
		<div class="box big">7</div>
		<div class="box big">8</div>
		<div class="box">9</div>
		<div class="box">10</div>
		<div class="box big">11</div>
		<div class="box">12</div>
		<div class="box">13</div>
		<div class="box">14</div>
		<div class="box">15</div>
		<div class="box">16</div>
		<div class="box">17</div>
		<div class="box big">18</div>
		<div class="box">19</div>
		<div class="box">20</div>
	</div>
</body>
</html>

style.css

div.box{
	width: 64px;
	height: 64px;
	margin: 2px;

	background-color: #ccc;
	border: 2px dotted #999;
	border-radius: 5px; 
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;

	font-size: 24px;
	font-weight: bold;
	text-align: center;;
	line-height: 64px;
	color: #999;
}

div.big{
	/* margin と border の分余分にとる */
	width: 136px;
	height: 136px;
}


/* この下は いじらない */

/**** Isotope Filtering ****/

.isotope-item {
  z-index: 2;
}

.isotope-hidden.isotope-item {
  pointer-events: none;
  z-index: 1;
}

/**** Isotope CSS3 transitions ****/

.isotope,
.isotope .isotope-item {
  -webkit-transition-duration: 0.8s;
     -moz-transition-duration: 0.8s;
      -ms-transition-duration: 0.8s;
       -o-transition-duration: 0.8s;
          transition-duration: 0.8s;
}

.isotope {
  -webkit-transition-property: height, width;
     -moz-transition-property: height, width;
      -ms-transition-property: height, width;
       -o-transition-property: height, width;
          transition-property: height, width;
}

.isotope .isotope-item {
  -webkit-transition-property: -webkit-transform, opacity;
     -moz-transition-property:    -moz-transform, opacity;
      -ms-transition-property:     -ms-transform, opacity;
       -o-transition-property:      -o-transform, opacity;
          transition-property:         transform, opacity;
}

/**** disabling Isotope CSS3 transitions ****/

.isotope.no-transition,
.isotope.no-transition .isotope-item,
.isotope .isotope-item.no-transition {
  -webkit-transition-duration: 0s;
     -moz-transition-duration: 0s;
      -ms-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s;
}

そして、ダウンロードした、jquery.isotope.min.js

ひとまずここでは、同じフォルダに3つのファイルです。

さて、index.htmlたたいてみよう!
できているはず。ブラウザのウインドウサイズを変えてみよう!

簡単な解説

f:id:fushimik:20130301183909g:plain
1.Masonryレイアウト全体を囲むブロックをここでは、#wrap で指定した。
2.動的に配置されるブロックをここでは、.box として指定した。
ただ、これだけ。
あとはCSSで、大きさやら余白やらしていするだけ。
ほんとに簡単。

これだけではなくて、Isotopeには、ほかにたくさんのオプションがあります。
参考:
http://isotope.metafizzy.co/docs/introduction.html

では。