はじめに
実務経験で、クリックした項目に関するもののみを表示するフィルター機能を「MixItUp」ライブラリで実装をしました。今回の記事ではそのサンプルデモを記事で実装していきます。
「MixItUp」ライブラリについて
「MixItUp」を使用してクリックした項目に関するもののみを表示するフィルター機能を実装する方法
「MixItUp」ライブラリについて
MixItUp(ミックスイットアップ)は、ウェブサイトやアプリケーションで要素のフィルタリングを行うためのJavaScriptライブラリです。以下はMixItUpに関する詳細です。
要素のフィルタリングと並べ替え
要素の表示を切り替え時のアニメーション
データフィルタリング(data-filter属性)
ライブラリのバージョン
「MixItUp」ライブラリのサイト
もっと詳しく見たいという方は下記のライブラリのサイトをご参照ください。
「MixItUp」ライブラリで実装したクリックした項目に関するもののみを表示するフィルター機能のサンプルデモ
下記ボタンをクリックすると、クリックした色に応じて、その下の正方形のリストがフィルタリングされてその色だけが表示されるようになります。
要素が切り替わる時にアニメーションが実装されていることもわかります。
PR
「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」をリストの子要素クラス名に指定すれば、ボタンの「赤」をクリックしたときにその子要素のみがフィルタリングされて表示されるようになります。