Mise en page d'une liste HTML dans espacés de manière égale dans les colonnes

Je voudrais proposer une liste comme celle-ci 2/3 uniformément espacés colonnes

<ul>
  <li>one<li>
  <li>two<li>
  <li>three<li>
  <li>four<li>
  <li>five<li>
  <li>six<li>
  <li>seven<li>
  <li>eight<li>
  <li>nine<li>
</ul>

Une solution consiste à scinder la liste en deux listes et le flotteur de l'un d'eux à droite, peut-être avec une marge, par exemple

  <div id="col2">
    <ul>
      <li>one<li>
      <li>two<li>
      <li>three<li>
      <li>four<li>
      <li>five<li>
    </ul>
  </div>

  <ul>
    <li>six<li>
    <li>seven<li>
    <li>eight<li>
    <li>nine<li>
  </ul>

#col2 {
    float: right;
    margin-right: 450px;
}

Cela fonctionne OK, mais a un certain nombre de lacunes:

  1. (Onu)balisage sémantique - ce n'est pas vraiment 2 listes, j'ai partagé une seule liste en 2, juste pour rendre les choses plus faciles à coiffer
  2. La marge doit être réglé manuellement pour quelque chose qui donne l'impression d'être régulièrement espacées
  3. Si le navigateur est suffisamment étroit, la colonne de droite, vers le deuxième.

Est-il une meilleure façon de le faire, de préférence sans l'aide d'une table?


Mise à jour:

J'ai essayé Méthode 1, mais je vois de drôles de résultats. Si vous regardez cette 3-liste des colonnes sur vous verrez qu'il y a des "trous" dans les 2 premières colonnes. Aucune idée pourquoi?

Avez-vous donné les éléments d'une hauteur fixe?

OriginalL'auteur Dónal | 2009-02-17