In this post I will show you a basic implementation of a folder view obtained through jQuery and CSS. We'll provide two views to our users: a view where all elements feature a large icon and another view where all elements are laid out as a simple list with smaller icons. This effect can be achieved by simply switching to a specific CSS class with jQuery. Said that, let's see our basic markup:
<div id="folder">
<div id="toolbar">
<a href="#" id="list">View as list</a>
<a href="#" id="icons">View as icons</a>
</div>
<ul id="folders">
<li>
<p>Web</p>
</li>
<li>
<p>Tutorials</p>
</li>
<li>
<p>Examples</p>
</li>
</ul>
</div>
This is a basic example, but if you want to add further actions to your elements, simply add a link within each folder item. Here's our CSS:
body {
margin: 0;
padding: 2em 0;
font: 76% Tahoma, sans-serif;
}
#folder {
width: 400px;
margin: 0 auto;
height: 100%;
overflow: hidden;
}
#folder ul {
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
list-style: none;
}
#folder ul li {
width: 100px;
margin-right: 5px;
padding-top: 112px;
background: url(large.png) no-repeat;
float: left;
}
#folder ul li p {
margin: 0;
padding-top: 4px;
text-align: center;
font-weight: bold;
}
#folder ul li.list {
width: 200px;
padding: 0 0 0 45px;
float: none;
margin: 0 0 0.5em 0;
background: url(small.png) no-repeat;
height: 42px;
line-height: 42px;
}
#folder ul li.list p {
padding: 0;
display: inline;
}
#toolbar {
height: 40px;
background: url(bg.png) repeat-x;
margin-bottom: 1em;
line-height: 40px;
text-align: center;
}
#toolbar a {
color: #fff;
font-weight: bold;
text-decoration: none;
padding: 0 1em;
text-transform: uppercase;
}
As you can see, it's the CSS class list that actually turns our horizontal folder view into a vertical one. Here jQuery has only to trigger the switch between these two views using the aforementioned class:
$(function() {
$('#list').click(function(event) {
$('li', '#folders').addClass('list');
event.preventDefault();
});
$('#icons').click(function(event) {
$('li', '#folders').removeClass('list');
event.preventDefault();
});
});
You can see the demo below.