Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to produce a 3-column list?

I have to produce a 3-column list of items similar to what can be seen for the different groups (mostly banks and financial institutions) at this page:

http://funds.ft.com/FundDirectory.aspx (even though these are horizontally aligned divs)

I have all the items I need to add to the 3 columns in a List<Group> stored in my Model.Groups object.

I was thinking of taking an approach similar to:

<ul>
    <% foreach (var item in Model.Groups) { %>

        <li>
            <a href='<%=item.URL %>'>
                <%= Html.Encode(item.Name) %>
            </a>
        </li>

    <% } %>
</ul>

but this will only generate a single-column list. Is there any way for me to produce a 3-column list with simple HTML/CSS or do I have to take a more dynamic approach, by e.g. creating 3 horizontally aligned lists, with the number of items per list depending on the total number of items in Model.Groups / 3?

Or is there a smarter way for me to approach this? I'm open to all suggestions. Thanks

like image 388
DaveDev Avatar asked Dec 17 '22 23:12

DaveDev


1 Answers

CSS3 column styles can be used on a list as well:

<ul class="group-list">
    ...
</ul>

.group-list {
    -moz-column-gap: 20;
    -moz-column-count: 3;
    -webkit-column-count: 3;
    -webkit-column-gap: 20;
    column-count: 3;
    column-gap: 20;
}

You can add Modernizr and this jQuery column plugin to support old versions of IE:

if (!Modernizr.csscolumns) {
        $('.group-list').makeacolumnlists({cols: 3, colWidth: 240, equalHeight: false, startN: 1});
}

PPK has a good article on CSS3 column support in browsers, and caniuse.com has a page on CSS3 Multiple column layout too.

like image 91
roryf Avatar answered Dec 26 '22 16:12

roryf