【アコーディオンメニュー】コンテンツをアニメーションでソートして表示【jquery.mixitup.js】

jQueryプラグインのjquery.mixitup.jsを利用して、アニメーション付きでコンテンツをソートして表示します。プラグインのバージョンはv2.1.11です。ソートメニューはPC表示でマウスオーバーで展開するプルダウンメニュー、スマホ表示でアコーディオンメニューです。

ソートメニューのCSSとjQueryは下記の記事と同様です。mixItUpを利用するためhtml部分のみ属性追加等のカスタマイズをします。

htmlのコードは下記になります。
mixItUpの利用に際し、ソートメニューのliタグにclass=”filter”とdata-filter=”コンテンツのクラス名”が必要です。「全て」のliタグのみdata-filter=”all”にします。
表示するコンテンツのdivタグ側にはclass=”mix”とclass=”ソートメニューのカスタムデータ属性で指定するクラス名”が必要です。

<ul class="dropmenu">
	<li id="js_cat"><a>カテゴリー</a>
		<ul>
			<li class="filter" data-filter="all"><a>全て</a></li>
			<li class="filter" data-filter=".cat01"><a>アコーディオンメニュー</a></li>
			<li class="filter" data-filter=".cat02"><a>カレンダー</a></li>
			<li class="filter" data-filter=".cat03"><a>タブメニュー</a></li>
			<li class="filter" data-filter=".cat04"><a>ツールチップ</a></li>
			<li class="filter" data-filter=".cat05"><a>フェーダー</a></li>
			<li class="filter" data-filter=".cat06"><a>フォーム</a></li>
			<li class="filter" data-filter=".cat07"><a>マウスオーバー</a></li>
			<li class="filter" data-filter=".cat08"><a>モーダルウィンドウ</a></li>
			<li class="filter" data-filter=".cat09"><a>レスポンシブ</a></li>
		</ul>
	</li>
</ul>
<div class="cat_image_all">
	<div class="cat_image mix cat08">
		<a href="/modal/modal-pattern05/">
		<img src="modal-pattern05.png" alt="">
		<p class="page_title">【モーダルウィンドウ】jquery.magnific-popup.jsを利用してYouTubeの動画を再生</p>
		</a>
	</div>
	<div class="cat_image mix cat05">
		<a href="/fade/fade-pattern11/">
		<img src="fade-pattern11.png" alt="">
		<p class="page_title">【フェーダー】左から右へカーテンを開くように画像を順番に表示</p>
		</a>
	</div>
	<div class="cat_image mix cat08">
		<a href="/modal/modal-pattern04/">
		<img src="modal-pattern04.png" alt="">
		<p class="page_title">【モーダルウィンドウ】プラグインを利用してhtml内のソースを表示【jquery.magnific-popup.js】</p>
		</a>
	</div>
</div>

続いてCSSのコードです。
コンテンツはフレックスボックスで横並びにします。mixItUpを動作させる上で重要な点はコンテンツのdivタグにdisplay: noneを記述することです。これがないと正常に動作しません。

.cat_image_all {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	max-width: 680px;
	margin: 3em auto 0;
}
.cat_image {
	display: none;
	width: 48%;
	max-width: 320px;
	margin: 0 0 2em;
}
.cat_image a {
	display: block;
	color: #444;
}
.cat_image a:hover {
	text-decoration: underline;
}
.page_title {
	margin: 0;
	padding: .5em 0 0;
}
@media screen and (max-width: 480px) {
	.cat_image {
		width: 90%;
		margin: 0 auto 2em;
	}
}

最後にjQueryのコードです。
コンテンツのdivタグ全てを内包するクラス名cat_image_allのdivタグをセレクタにしてmixItUpを起動します。

$(function() {
	$(".cat_image_all").mixItUp();
});
タイトルとURLをコピーしました