本文へスキップ

ドキュメント

フィルター

メタデータで任意のレイアウト内のアイテムをフィルタリングまたはソートします。

フィルターコンポーネントは、特にマスングリッドのグリッドコンポーネントと組み合わせて使用されることがよくありますが、それに限定されません。アイテムの位置に関係なく、任意のレイアウトをフィルタリングまたはソートできます。アイテムは、異なるフィルタリングとソートの状態間でスムーズなトランジションを使用してフェードイン/アウトし、移動します。


使用方法

このコンポーネントを適用するには、uk-filter="target: SELECTOR"属性を持つコンテナ要素が必要です。このコンテナ内に、フィルターコントロールのリストと、フィルタリングするレイアウトアイテムを作成します。target: SELECTORオプションを使用して、レイアウトアイテムを含む要素を選択します。

<div uk-filter="target: .js-filter">

    <!-- Filter controls -->
    <ul>
        <li><a href="#"></a></li>
    </ul>

    <!-- Layout items -->
    <ul class="js-filter">
        <li></li>
    </ul>

</div>

次に、各レイアウトアイテムのメタデータ(たとえば、アイテムが属するカテゴリ)を定義する必要があります。これには、任意のHTMLクラスまたは属性を使用します。

フィルターコントロールを適用するには、uk-filter-control属性を追加します。フィルタリングするメタデータを定義するには、filter: SELECTORオプションを使用します。セレクタは、レイアウトアイテムに対して定義するHTMLクラスや属性など、任意のCSSセレクタにすることができます。

<div uk-filter="target: .js-filter">

    <ul>
        <li uk-filter-control="filter: .tag-blue"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li class="tag-blue"></li>
    </ul>

</div>

targetuk-filter属性値の唯一のオプションである場合、uk-filter="SELECTOR"を使用することもできます。フィルターコントロールにも同じことが当てはまります。filteruk-filter-control属性値の唯一のオプションである場合、uk-filter-control="SELECTOR"を使用することもできます。

<div uk-filter=".js-filter">

    <ul>
        <li uk-filter-control=".tag-blue"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li class="tag-blue"></li>
    </ul>

</div>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li uk-filter-control=".tag-white"><a href="#">White</a></li>
            <li uk-filter-control=".tag-blue"><a href="#">Blue</a></li>
            <li uk-filter-control=".tag-black"><a href="#">Black</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
        </ul>
    
    </div>

フィルターコンポーネントはスタイルが適用されていないため、他のUIkitコンポーネントを使用してフィルターコントロールとレイアウトアイテムを作成できます。NavSubnavTabコンポーネントを使用してフィルターコントロールをスタイル設定できます。通常、グリッドコンポーネントを使用してアイテムレイアウトを作成します。


アニメーション

デフォルトでは、フィルターは異なるフィルタリング状態間のアイテムにslideアニメーションを使用します。異なるアニメーションを適用するには、属性にanimationオプションを追加するだけです。

アニメーション 説明
slide アイテムをフェードイン/アウトするか、新しい位置にスライドさせます。
fade すべてのアイテムをフェードイン/アウトします。
delayed-fade アイテムをわずかに遅延させてフェードイン/アウトします。
<div uk-filter="animation: fade">…</div>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter; animation: fade">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li uk-filter-control=".tag-white"><a href="#">White</a></li>
            <li uk-filter-control=".tag-blue"><a href="#">Blue</a></li>
            <li uk-filter-control=".tag-black"><a href="#">Black</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li class="tag-blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li class="tag-black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
        </ul>
    
    </div>

アクティブ状態

フィルターコントロールに.uk-activeクラスを追加すると、フィルターが最初に適用されます。

<li class="uk-active" uk-filter-control="[data-color='blue']">…</li>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li class="uk-active" uk-filter-control="[data-color='white']"><a href="#">White</a></li>
            <li uk-filter-control="[data-color='blue']"><a href="#">Blue</a></li>
            <li uk-filter-control="[data-color='black']"><a href="#">Black</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
        </ul>
    
    </div>

フィルターのリセット

フィルターをリセットしてすべてのアイテムを対象にするには、セレクタを指定せずにuk-filter-control属性を使用します。

<li uk-filter-control>…</li>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li class="uk-active" uk-filter-control><a href="#">All</a></li>
            <li uk-filter-control="[data-color='white']"><a href="#">White</a></li>
            <li uk-filter-control="[data-color='blue']"><a href="#">Blue</a></li>
            <li uk-filter-control="[data-color='black']"><a href="#">Black</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-color="blue">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-color="black">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
        </ul>
    
    </div>

メタデータ

アイテムは、フィルタリングのために異なるメタデータを持つことができます。HTMLクラスまたはdata属性を定義し、フィルターコントロールに対応するCSSセレクタを作成するだけです。この例では、HTMLクラスではなくdata属性をフィルターに使用しています。

<div uk-filter="target: .js-filter">

    <ul>
        <li uk-filter-control="[data-tags*='blue']"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li data-tags="blue dark"></li>
    </ul>

</div>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li uk-filter-control="[data-tags*='white']"><a href="#">White</a></li>
            <li uk-filter-control="[data-tags*='blue']"><a href="#">Blue</a></li>
            <li uk-filter-control="[data-tags*='black']"><a href="#">Black</a></li>
            <li uk-filter-control="[data-tags*='dark']"><a href="#">Dark Colors</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li data-tags="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-tags="blue dark">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-tags="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-tags="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-tags="black dark">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-tags="black dark">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-tags="blue dark">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-tags="black dark">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
            <li data-tags="blue dark">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-tags="white">
                <div class="uk-card uk-card-default uk-card-body">Item</div>
            </li>
            <li data-tags="blue dark">
                <div class="uk-card uk-card-primary uk-card-body">Item</div>
            </li>
            <li data-tags="black dark">
                <div class="uk-card uk-card-secondary uk-card-body">Item</div>
            </li>
        </ul>
    
    </div>

複数のフィルター

さまざまな種類のメタデータを定義し、それらをフィルタリングするための任意の数のコントロールを追加します。フィルターコントロールは排他的であるため、一度に1つの基準のみがフィルタリングされます。

<div uk-filter="target: .js-filter">

    <ul>
        <li uk-filter-control="[data-color='blue']"><a href="#"></a></li>
    </ul>

    <ul>
        <li uk-filter-control="[data-size='small']"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li data-color="blue" data-size="small"></li>
    </ul>

</div>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <div class="uk-grid-small uk-grid-divider uk-child-width-auto" uk-grid>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li class="uk-active" uk-filter-control><a href="#">All</a></li>
                </ul>
            </div>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li uk-filter-control="[data-color='white']"><a href="#">White</a></li>
                    <li uk-filter-control="[data-color='blue']"><a href="#">Blue</a></li>
                    <li uk-filter-control="[data-color='black']"><a href="#">Black</a></li>
                </ul>
            </div>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li uk-filter-control="[data-size='small']"><a href="#">Small</a></li>
                    <li uk-filter-control="[data-size='medium']"><a href="#">Medium</a></li>
                    <li uk-filter-control="[data-size='large']"><a href="#">Large</a></li>
                </ul>
            </div>
        </div>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid="masonry: true">
            <li data-color="white" data-size="large">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="small">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="medium">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="small">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="medium">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="small">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="large">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="large">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="large">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="small">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
        </ul>
    
    </div>

グループ

複数の基準で同時にアイテムをフィルタリングするには、フィルターコントロールをグループ化する必要があります。uk-filter-control属性にgroup: NAMEオプションを追加し、メタデータのグループ名を定義します。

<div uk-filter="target: .js-filter">

    <ul>
        <li uk-filter-control="filter: [data-color='blue']; group: color"><a href="#"></a></li>
        <li uk-filter-control="filter: [data-color='white']; group: color"><a href="#"></a></li>
    </ul>

    <ul>
        <li uk-filter-control="filter: [data-size='small']; group: size"><a href="#"></a></li>
        <li uk-filter-control="filter: [data-size='large']; group: size"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li data-color="blue" data-size="small"></li>
    </ul>

</div>
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
    • アイテム
  • <div uk-filter="target: .js-filter">
    
        <div class="uk-grid-small uk-grid-divider uk-child-width-auto" uk-grid>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li class="uk-active" uk-filter-control><a href="#">All</a></li>
                </ul>
            </div>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li uk-filter-control="filter: [data-color='white']; group: data-color"><a href="#">White</a></li>
                    <li uk-filter-control="filter: [data-color='blue']; group: data-color"><a href="#">Blue</a></li>
                    <li uk-filter-control="filter: [data-color='black']; group: data-color"><a href="#">Black</a></li>
                </ul>
            </div>
            <div>
                <ul class="uk-subnav uk-subnav-pill" uk-margin>
                    <li uk-filter-control="filter: [data-size='small']; group: size"><a href="#">Small</a></li>
                    <li uk-filter-control="filter: [data-size='medium']; group: size"><a href="#">Medium</a></li>
                    <li uk-filter-control="filter: [data-size='large']; group: size"><a href="#">Large</a></li>
                </ul>
            </div>
        </div>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid="masonry: true">
            <li data-color="white" data-size="large">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="small">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="medium">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="small">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="medium">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="small">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="large">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="large">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="white" data-size="large">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
            <li data-color="black" data-size="small">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">Item</div>
                </div>
            </li>
        </ul>
    
    </div>

ソート

アイテムをアルファベット順にソートするには、uk-filter-control属性にsort: ATTRIBUTEオプションを追加し、アイテムをソートするメタデータ属性を定義します。デフォルトでは、アイテムは昇順にソートされます。アイテムを降順にソートするには、order: descを追加します。

<div uk-filter="target: .js-filter">

    <ul>
        <li uk-filter-control="sort: data-color"><a href="#"></a></li>
        <li uk-filter-control="sort: data-color; order: desc"><a href="#"></a></li>
    </ul>

    <ul class="js-filter">
        <li data-color="blue"></li>
    </ul>

</div>
    • 2016-06-01
    • 2016-12-13
    • 2017-05-20
    • 2017-09-17
    • 2017-11-03
    • 2017-12-25
    • 2018-01-30
    • 2018-02-01
    • 2018-03-11
    • 2018-06-13
    • 2018-10-27
    • 2018-12-02
  • <div uk-filter="target: .js-filter">
    
        <ul class="uk-subnav uk-subnav-pill">
            <li class="uk-active" uk-filter-control="sort: data-date"><a href="#">Ascending</a></li>
            <li uk-filter-control="sort: data-date; order: desc"><a href="#">Descending</a></li>
        </ul>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid>
            <li data-date="2016-06-01">
                <div class="uk-card uk-card-default uk-card-body">2016-06-01</div>
            </li>
            <li data-date="2016-12-13">
                <div class="uk-card uk-card-primary uk-card-body">2016-12-13</div>
            </li>
            <li data-date="2017-05-20">
                <div class="uk-card uk-card-default uk-card-body">2017-05-20</div>
            </li>
            <li data-date="2017-09-17">
                <div class="uk-card uk-card-default uk-card-body">2017-09-17</div>
            </li>
            <li data-date="2017-11-03">
                <div class="uk-card uk-card-secondary uk-card-body">2017-11-03</div>
            </li>
            <li data-date="2017-12-25">
                <div class="uk-card uk-card-secondary uk-card-body">2017-12-25</div>
            </li>
            <li data-date="2018-01-30">
                <div class="uk-card uk-card-primary uk-card-body">2018-01-30</div>
            </li>
            <li data-date="2018-02-01">
                <div class="uk-card uk-card-secondary uk-card-body">2018-02-01</div>
            </li>
            <li data-date="2018-03-11">
                <div class="uk-card uk-card-primary uk-card-body">2018-03-11</div>
            </li>
            <li data-date="2018-06-13">
                <div class="uk-card uk-card-default uk-card-body">2018-06-13</div>
            </li>
            <li data-date="2018-10-27">
                <div class="uk-card uk-card-primary uk-card-body">2018-10-27</div>
            </li>
            <li data-date="2018-12-02">
                <div class="uk-card uk-card-secondary uk-card-body">2018-12-02</div>
            </li>
        </ul>
    
    </div>

マスングリッド

フィルターは、多くの場合、マスングリッドに適用されます。フィルタートランジションは、アイテムの位置に関係なく、あらゆる種類のレイアウトで完全に機能します。グリッドのパララックスオプションでも機能します。

マスングリッドを使用した包括的な例を次に示します。

    • A
    • B
    • C
    • D
    • E
    • F
    • G
    • H
    • I
    • J
    • K
    • L
  • <div uk-filter="target: .js-filter">
    
        <div class="uk-grid-small uk-flex-middle" uk-grid>
            <div class="uk-width-expand">
    
                <div class="uk-grid-small uk-grid-divider uk-child-width-auto" uk-grid>
                    <div>
                        <ul class="uk-subnav uk-subnav-pill" uk-margin>
                            <li class="uk-active" uk-filter-control><a href="#">All</a></li>
                        </ul>
                    </div>
                    <div>
                        <ul class="uk-subnav uk-subnav-pill" uk-margin>
                            <li uk-filter-control="[data-color='white']"><a href="#">White</a></li>
                            <li uk-filter-control="[data-color='blue']"><a href="#">Blue</a></li>
                            <li uk-filter-control="[data-color='black']"><a href="#">Black</a></li>
                        </ul>
                    </div>
                    <div>
                        <ul class="uk-subnav uk-subnav-pill" uk-margin>
                            <li uk-filter-control="[data-size='small']"><a href="#">Small</a></li>
                            <li uk-filter-control="[data-size='medium']"><a href="#">Medium</a></li>
                            <li uk-filter-control="[data-size='large']"><a href="#">Large</a></li>
                        </ul>
                    </div>
                </div>
    
            </div>
            <div class="uk-width-auto uk-text-nowrap">
    
    
                <span class="uk-active" uk-filter-control="sort: data-name"><a class="uk-icon-link" href="#" uk-icon="icon: arrow-down" aria-label="Sort ascending"></a></span>
                <span uk-filter-control="sort: data-name; order: desc"><a class="uk-icon-link" href="#" uk-icon="icon: arrow-up" aria-label="Sort descending"></a></span>
    
            </div>
        </div>
    
        <ul class="js-filter uk-child-width-1-2 uk-child-width-1-3@m uk-text-center" uk-grid="masonry: true">
            <li data-color="white" data-size="large" data-name="A">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">A</div>
                </div>
            </li>
            <li data-color="blue" data-size="small" data-name="B">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">B</div>
                </div>
            </li>
            <li data-color="white" data-size="medium" data-name="C">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">C</div>
                </div>
            </li>
            <li data-color="white" data-size="small" data-name="D">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">D</div>
                </div>
            </li>
            <li data-color="black" data-size="medium" data-name="E">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">E</div>
                </div>
            </li>
            <li data-color="black" data-size="small" data-name="F">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">F</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium" data-name="G">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">G</div>
                </div>
            </li>
            <li data-color="black" data-size="large" data-name="H">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">H</div>
                </div>
            </li>
            <li data-color="blue" data-size="large" data-name="I">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">I</div>
                </div>
            </li>
            <li data-color="white" data-size="large" data-name="J">
                <div class="uk-card uk-card-default uk-card-body">
                    <canvas width="600" height="800"></canvas>
                    <div class="uk-position-center">J</div>
                </div>
            </li>
            <li data-color="blue" data-size="medium" data-name="K">
                <div class="uk-card uk-card-primary uk-card-body">
                    <canvas width="600" height="600"></canvas>
                    <div class="uk-position-center">K</div>
                </div>
            </li>
            <li data-color="black" data-size="small" data-name="L">
                <div class="uk-card uk-card-secondary uk-card-body">
                    <canvas width="600" height="400"></canvas>
                    <div class="uk-position-center">L</div>
                </div>
            </li>
        </ul>
    
    </div>

コンポーネントオプション

これらのオプションは、コンポーネント属性に適用できます。複数のオプションをセミコロンで区切ります。詳細はこちら

オプション デフォルト 説明
target 文字列 フィルターを適用する対象リスト。
selActive 文字列、ブール値 false 最初にアクティブなフィルターコントロールのセレクタ。
animation 文字列、ブール値 slide アニメーションモード(slidefadedelayed-fade、またはfalse)。
duration 数値 250 アニメーション時間(ミリ秒)。

target主要なオプションであり、属性値に唯一のオプションである場合は、キーを省略できます。


JavaScript

JavaScriptコンポーネントの詳細はこちら。

初期化

UIkit.filter(element, options);

イベント

このコンポーネントがアタッチされた要素で、次のイベントがトリガーされます。

名前 説明
beforeFilter フィルターが適用される前に発生します。
afterFilter フィルターが適用された後に発生します。

アクセシビリティ

フィルターコンポーネントは、適切なWAI-ARIAロール、状態、プロパティを自動的に設定します。