目次
はじめに
実務経験で、クリックした項目に関するもののみを表示するフィルター機能を「MixItUp」ライブラリで実装をしました。今回の記事ではそのサンプルデモを記事で実装していきます。
この記事でわかること
「MixItUp」ライブラリについて
「MixItUp」を使用してクリックした項目に関するもののみを表示するフィルター機能を実装する方法
「MixItUp」ライブラリについて
「MixItUp」を使用してクリックした項目に関するもののみを表示するフィルター機能を実装する方法
「MixItUp」ライブラリについて
MixItUp(ミックスイットアップ)は、ウェブサイトやアプリケーションで要素のフィルタリングを行うためのJavaScriptライブラリです。以下はMixItUpに関する詳細です。
要素のフィルタリングと並べ替え
MixItUpを使用すると、ウェブページ上の要素(通常は画像やテキストなど)を特定の条件に基づいてフィルタリングしたり、指定した方法で並べ替えたりすることができます。たとえば、カテゴリ別に商品を表示する場合や、投稿を日付順にソートする場合などに使用できます。
要素の表示を切り替え時のアニメーション
MixItUpは、要素の表示および非表示時のアニメーションを提供しています。これにより、要素がスムーズに切り替わり、ユーザーエクスペリエンスを向上させることができます。
データフィルタリング(data-filter属性)
MixItUpは、データ属性を使用して要素をフィルタリングすることもサポートしています。これにより、要素にカスタム属性を追加し、それに基づいてフィルタリングを行うことができます。
ライブラリのバージョン
MixItUpのバージョンは3です。最終更新が6年前の2017年の2月なので古いライブラリになります。
MixItUpは、ウェブ開発者にとって非常に便利なツールであり、要素のフィルタリングや並べ替えを行う際に非常に役立ちます。特にポートフォリオサイト、製品カタログ、画像ギャラリーなど、要素を組み合わせて表示する必要がある場面で広く利用されています。
今回の実務経験では40以上あるイベントのパッケージのカテゴリーのフィルタリングで使用しました。
「MixItUp」ライブラリで実装したクリックした項目に関するもののみを表示するフィルター機能のソースコード
htmlとjsのソースコードを掲載します。cssについては環境によって変わるので合うように調整していただければと思います。
PR
<div class="button__list">
<div class="button__item all" data-filter="all">全て</div>
<div class="button__item red" data-filter=".filter-red">赤</div>
<div class="button__item blue" data-filter=".filter-blue">青</div>
<div class="button__item green" data-filter=".filter-green">緑</div>
<div class="button__item yellow" data-filter=".filter-yellow">黄</div>
</div>
<div id="mix-container" class="square__container">
<div class="square mix filter-red red1"></div>
<div class="square mix filter-red red2"></div>
<div class="square mix filter-red red3"></div>
<div class="square mix filter-red red4"></div>
<div class="square mix filter-blue blue1"></div>
<div class="square mix filter-blue blue2"></div>
<div class="square mix filter-blue blue3"></div>
<div class="square mix filter-blue blue4"></div>
<div class="square mix filter-green green1"></div>
<div class="square mix filter-green green2"></div>
<div class="square mix filter-green green3"></div>
<div class="square mix filter-green green4"></div>
<div class="square mix filter-yellow yellow1"></div>
<div class="square mix filter-yellow yellow2"></div>
<div class="square mix filter-yellow yellow3"></div>
<div class="square mix filter-yellow yellow4"></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mixitup/3.3.1/mixitup.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const mixContainer = document.getElementById('mix-container');
const mixer = mixitup(mixContainer);
});
</script>
「MixItUp」で正しく動作するためのポイント
ボタンの方にdata-filter属性を指定し、先頭に「.(ドット)」をつける
ボタン(ここではbutton__item)の「全て」には「data-filter=”all”」を指定します。それ以外は任意のdata-filter属性を指定できますが、先頭に「.(ドット)」をつける必要があります。
ボタンの方のclass名はスタイリングのためのものなのでこちらは動作には関係ありません。
リストの親要素に任意のidを指定する
リストの親要素(ここではsquare__container)に任意のid(ここではmix-container)を指定してください。上記ソースコードを確認すればわかりますが、指定したidはjsの方で使用します。
リストの子要素に対して「mix」というクラス名を指定する
リストの子要素(ここではsquare)に「mix」というクラス名がないと、正しく動作しないので必ず指定してください。
リストの子要素に対してボタンで指定した「data-filter」をクラス名に指定する
例えば、上記のソースコーデでは、ボタンの「赤」のdata-filterに「.filter-red」を指定しました。
「.(ドット)」を外した「filter-red」をリストの子要素クラス名に指定すれば、ボタンの「赤」をクリックしたときにその子要素のみがフィルタリングされて表示されるようになります。