Avec le code HTML suivant, quelle est la méthode la plus simple pour afficher la liste sur deux colonnes?
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
Affichage souhaité:
A B
C D
E
La solution doit pouvoir fonctionner sur Internet Explorer.
Réponses:
Navigateurs modernes
exploitez le module de colonnes css3 pour prendre en charge ce que vous recherchez.
http://www.w3schools.com/cssref/css3_pr_columns.asp
CSS:
http://jsfiddle.net/HP85j/8/
Navigateurs hérités
Malheureusement, pour le support d'IE, vous aurez besoin d'une solution de code qui implique la manipulation de JavaScript et de dom. Cela signifie qu'à chaque fois que le contenu de la liste change, vous devrez effectuer l'opération de réorganisation de la liste en colonnes et de réimpression. La solution ci-dessous utilise jQuery pour plus de concision.
http://jsfiddle.net/HP85j/19/
HTML:
JavaScript:
CSS:
ÉDITER:
Comme indiqué ci-dessous, les colonnes seront ordonnées comme suit:
tandis que le PO a demandé une variante correspondant à ce qui suit:
Pour accomplir la variante, vous changez simplement le code comme suit:
la source
A B
(le deuxième élément doit être ajouté à droite), mais dans vos exemples, c'estA E
.Je cherchais la solution de @ jaider qui a fonctionné, mais j'offre une approche légèrement différente avec laquelle je pense qu'il est plus facile de travailler et que j'ai vue être bonne sur tous les navigateurs.
Par défaut, la liste non ordonnée affiche la position de la puce à l'extérieur, mais dans certains navigateurs, cela entraînerait des problèmes d'affichage en fonction de la façon dont le navigateur présente votre site Web.
Pour l'afficher au format:
etc., utilisez les éléments suivants:
Cela devrait résoudre tous vos problèmes d'affichage des colonnes. Tous mes meilleurs vœux et merci @jaider, car votre réponse m'a aidé à le découvrir.
la source
J'ai essayé de poster ceci en tant que commentaire, mais je n'ai pas pu afficher les colonnes correctement (selon votre question).
Vous demandez:
UN B
CD
E
... mais la réponse acceptée comme solution reviendra:
UN D
ÊTRE
C
... soit la réponse est incorrecte, soit la question l'est.
Une solution très simple serait de définir la largeur de votre
<ul>
, puis de flotter et de définir la largeur de vos<li>
articles comme suitExemple ici http://jsfiddle.net/Jayx/Qbz9S/1/
Si votre question est fausse, les réponses précédentes s'appliquent (avec un correctif JS pour manque de support IE).
la source
J'aime la solution pour les navigateurs modernes, mais les puces manquent, alors j'ajoute un petit truc:
http://jsfiddle.net/HP85j/419/
la source
list-style-position: inside;
c'est une meilleure solution pour que les balles apparaissent correctement.Voici une solution possible:
Fragment:
Et c'est fait.
Pour 3 colonnes, utilisez une
li
largeur de 33%, pour 4 colonnes, utilisez 25%, etc.la source
C'est la manière la plus simple de le faire. CSS uniquement.
la source
Vous pouvez utiliser CSS uniquement pour définir deux colonnes ou plus
la source
Cela peut être réalisé en utilisant la propriété css de comptage de colonnes sur div parent,
comme
consultez ceci pour plus de détails.
Comment faire apparaître une liste DIV flottante dans des colonnes, pas des lignes
la source
column-count
n'affichera pas les articles dans le bon ordre. Par exemple, l'affichage souhaité dans la première ligne estA B
(le deuxième élément doit être ajouté à droite), mais si vous l'utilisez,column-count
il le seraA E
.Vous pouvez le faire très facilement avec le plugin jQuery-Columns par exemple pour diviser un ul avec une classe de .mylist que vous feriez
Voici un exemple en direct sur jsfiddle
J'aime mieux cela qu'avec CSS car avec la solution CSS tout ne s'aligne pas verticalement vers le haut.
la source
<ul>
liste en plusieurs listes ... Cela pourrait compliquer d'autres choses.plus une réponse après quelques années!
dans cet article: http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/
HTML:
CSS:
la source
Dans le
updateColumns()
besoinif (column >= columns.length)
plutôt queif (column > columns.length)
de lister tous les éléments (C est sauté par exemple) donc:http://jsfiddle.net/e2vH9/1/
la source
Avec Bootstrap ... Cette réponse ( https://stackoverflow.com/a/23005046/1128742 ) m'a fait pointer vers cette solution:
http://jsfiddle.net/patrickbad767/472r0ynf/
la source
La solution héritée dans la réponse du haut ne fonctionnait pas pour moi car je voulais affecter plusieurs listes sur la page et la réponse suppose une seule liste et elle utilise un bon état global. Dans ce cas, je voulais modifier chaque liste dans un
<section class="list-content">
:la source
Bien que j'ai trouvé la réponse de Gabriel pour travailler à un degré, j'ai trouvé ce qui suit en essayant de classer la liste verticalement (premier ul AD et deuxième ul EG):
J'ai révisé le JQuery afin que ce qui précède ne se produise pas.
la source
Thisd était une solution parfaite pour moi, à la recherche depuis des années:
http://css-tricks.com/forums/topic/two-column-unordered-list/
la source
Abdul
dans sa réponse, identique à la largeur et à l'ID utilisées.