Simple Grid List Filter Plugin with jQuery and CSS3 - xFilterList
File Size: | 5.67 KB |
---|---|
Views Total: | 6294 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

xFilterList is a simple lightweight jQuery plugin used to categorize, sort, and filter a grid of items with CSS3 powered transitions. Inspired by joseluisq's uFilterGrid.
See also:
- jQuery Plugin For Interactive and Filterable Portfolio
- Filter & Shuffle A Grid Of Items with jQuery and CSS3
- jQuery Plugin For Sortable and Filterable Grid of Items - Shuffle
How to use it:
1. Load the jQuery library and the jQuery xFilterList plugin in your Html page.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="jquery.xfilterlist.js"></script>
2. Create a grid of items using Html unordered list. Use data-filter
attribute to categorize the items so you can filter them by groups. The Items can have multiple groups.
<ul id="sortlist"> <li data-filter="group-1 group-2">Item 1</li> <li data-filter="group-2 group-3">Item 2</li> <li data-filter="group-1 group-3">Item 3</li> ... </ul>
3. Create links to filter the items by groups.
<nav id="filters"> Filter by: <a href="javascript:;" data-filter="all">All</a> <a href="javascript:;" data-filter="group-1">Group 1</a> <a href="javascript:;" data-filter="group-2">Group 2</a> <a href="javascript:;" data-filter="group-3">Group 3</a> </nav>
4. The CSS/CSS3 rules to style the grid and to animate the items when filtering.
/* Filters */ #filters { text-align: center; color: #ccc; font-size: 15px; padding: 15px 0 0 0; } #filters a { color: #373A3C; margin-left: 5px; margin-right: 5px; text-decoration: none; transition: all .2s ease-out; } #filters a:first-child { } #filters a:hover, #filters a.active { color: #d37070; } /* Sortlist */ #sortlist { position: relative; display: block; padding: 0; margin: 1.5em auto; transition: all .4s ease-out; } #sortlist li { position: absolute; width: 90px; height: 90px; display: block; text-align: center; font-size: 3.2em; line-height: 1.6em; overflow: hidden; color: #868686; background-color: #E9E9E9; box-shadow: inset 0px 0px 0px 1px #CECECE; transition: all 0.4s ease-out; } #sortlist > li:hover { color: #D17E7E; } #sortlist li:nth-child(-2n+8), #sortlist li:nth-child(8) ~ li:nth-child(-2n+15), #sortlist li:nth-child(16) ~ li:nth-child(-2n+24), #sortlist li:nth-child(24) ~ li:nth-child(-2n+31), #sortlist li:nth-child(32) ~ li:nth-child(-2n+40), #sortlist li:nth-child(40) ~ li:nth-child(-2n+47), #sortlist li:nth-child(48) ~ li:nth-child(-2n+56), #sortlist li:nth-child(56) ~ li:nth-child(-2n+63) { background-color: white; } #sortlist.filtered > li { color: #D17E7E; background-color: white; }
5. The Javascript to enable the plugin.
$(window).on('load', function () { // In action var sortlist = $('#sortlist'); var mg = new xFilterList(sortlist, { // you can set the margin in pixels margin: 5 }); // Filtering var filter, links = $('a'); links.on('click', function () { if (!$(this).hasClass('active')) { // Retrieve the filter value filter = $(this).attr('data-filter'); // Filtering by retrieved value mg.filterBy(filter); links.removeClass('active'); $(this).addClass('active'); if (filter === 'all') { sortlist.removeClass('filtered'); } else { sortlist.addClass('filtered'); } } }); // Trigger click event for first link links.first().trigger('click'); });
Change log:
2014-10-17
- Added new indentation
This awesome jQuery plugin is developed by joseluisq. For more Advanced Usages, please check the demo page or visit the official website.