tags:

views:

386

answers:

3

I've got a list of about 30 <li> in a <ul>. Is there any way, using CSS, to divide these into three columns of ten?

+1  A: 

I usually set the widths at 28% and float the to the left:

ul li {
   width: 28%;
   margin: .5em 2%;
   float:left;
}

The downside to this is that items fill like:

- - -
- - -
-

Not like:

- - -
- -
- -

If you want vertical filled columns, you need 3 <ul>s.

willoller
+2  A: 

In CSS3 this is possible.

#columns {
    -moz-column-count: 3;
    -moz-column-gap: 20px;
    -webkit-column-count: 3;
    -webkit-column-gap: 20px;
    column-count: 3;
    column-gap: 20px;
}

HTML:

<div id="columns">
  <ul>
... lots of lis ...
  </ul>
</div>

The list items will spill over into the next column as they exceed the height of the container.

Perhaps for older browser you could use JavaScript, as this seems to be more aesthetic than a critical feature.

Zach
What browsers support CSS3? I'm afraid you may be too-cool-for-school. :(
Chris
"Currently supported by Firefox 1.5+ and Safari 3" and I would suppose Chrome and other Webkit derivatives. No IE :(
Zach
+1  A: 

there is a good article about multi column lists in Alistapart. Might be helpful.

andyk