Com o seguinte HTML, qual é o método mais fácil para exibir a lista como duas colunas?
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
Visor desejado:
A B
C D
E
A solução precisa poder funcionar no Internet Explorer.
Respostas:
Navegadores modernos
aproveite o módulo de colunas css3 para dar suporte ao que você está procurando.
http://www.w3schools.com/cssref/css3_pr_columns.asp
CSS:
http://jsfiddle.net/HP85j/8/
Navegadores herdados
Infelizmente, para o suporte ao IE, você precisará de uma solução de código que envolva JavaScript e manipulação de domínio. Isso significa que sempre que o conteúdo da lista for alterado, você precisará executar a operação para reordenar a lista em colunas e reimprimir. A solução abaixo usa o jQuery por questões de brevidade.
http://jsfiddle.net/HP85j/19/
HTML:
JavaScript:
CSS:
EDITAR:
Conforme indicado abaixo, isso ordenará as colunas da seguinte maneira:
enquanto o OP solicitou uma variante correspondente ao seguinte:
Para realizar a variante, basta alterar o código para o seguinte:
fonte
A B
(o segundo elemento deve ser anexado à direita), mas nos seus exemplos éA E
.Eu estava olhando para a solução da @ jaider, que funcionou, mas estou oferecendo uma abordagem um pouco diferente, que acho mais fácil de trabalhar e que considero ser boa nos navegadores.
Por padrão, a lista não ordenada exibe a posição do marcador do lado de fora, mas, em alguns navegadores, isso causa alguns problemas de exibição com base na maneira do navegador de exibir seu site.
Para que seja exibido no formato:
etc. use o seguinte:
Isso deve resolver todos os seus problemas com a exibição de colunas. Tudo de bom e obrigado @jaider como sua resposta ajudou a me orientar a descobrir isso.
fonte
Tentei postar isso como um comentário, mas não consegui exibir as colunas corretamente (conforme sua pergunta).
Você está pedindo:
AB
CD
E
... mas a resposta aceita como solução retornará:
DE ANÚNCIOS
ESTAR
C
... então a resposta está incorreta ou a pergunta está.
Uma solução muito simples seria definir a largura do seu
<ul>
e, em seguida, flutuar e definir a largura dos seus<li>
itens da seguinte maneiraExemplo aqui http://jsfiddle.net/Jayx/Qbz9S/1/
Se sua pergunta estiver errada, as respostas anteriores se aplicam (com uma correção JS por falta de suporte do IE).
fonte
Gosto da solução para navegadores modernos, mas faltam os marcadores, então adiciono um pequeno truque:
http://jsfiddle.net/HP85j/419/
fonte
list-style-position: inside;
é uma solução melhor para as balas aparecerem corretamente.Aqui está uma solução possível:
Snippet:
E está feito.
Para 3 colunas, use
li
largura como 33%, para 4 colunas, use 25% e assim por diante.fonte
Esta é a maneira mais simples de fazer isso. Apenas CSS.
fonte
Você pode usar CSS apenas para definir duas colunas ou mais
fonte
Isso pode ser alcançado usando a propriedade css de contagem de colunas na div pai,
gostar
verifique isso para mais detalhes.
Como fazer a lista DIV flutuante aparecer em colunas, não em linhas
fonte
column-count
não exibirá os itens na ordem correta. Por exemplo, a exibição desejada na primeira linha éA B
(o segundo elemento deve ser anexado à direita), mas se você o usarcolumn-count
, seráA E
.Você pode fazer isso com muita facilidade com o plug-in jQuery-Columns, por exemplo, para dividir um ul com uma classe de .mylist que você faria
Aqui está um exemplo ao vivo no jsfiddle
Eu gosto disso melhor do que com CSS porque, com a solução CSS, nem tudo se alinha verticalmente ao topo.
fonte
<ul>
lista em várias listas ... Isso pode complicar outras coisas.mais uma resposta depois de alguns anos!
neste artigo: http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/
HTML:
CSS:
fonte
Em
updateColumns()
necessidadeif (column >= columns.length)
, em vez deif (column > columns.length)
para listar todos os elementos (C é saltado por exemplo) de modo a:http://jsfiddle.net/e2vH9/1/
fonte
Com o Bootstrap ... Esta resposta ( https://stackoverflow.com/a/23005046/1128742 ) me apontou para esta solução:
http://jsfiddle.net/patrickbad767/472r0ynf/
fonte
A solução legada na resposta principal não funcionou para mim porque eu queria afetar várias listas na página e a resposta assume uma única lista, além de usar um pouco do estado global. Nesse caso, eu queria alterar todas as listas dentro de um
<section class="list-content">
:fonte
Embora eu tenha encontrado a resposta de Gabriel para trabalhar até certo ponto, encontrei o seguinte ao tentar ordenar a lista verticalmente (primeiro ul AD e segundo ul EG):
Revisei o JQuery para que o que foi dito acima não aconteça.
fonte
Thisd foi uma solução perfeita para mim, procurando por anos:
http://css-tricks.com/forums/topic/two-column-unordered-list/
fonte
Abdul
em sua resposta, idêntico até à largura e ID usados.