Estou tentando replicar o layout div do Pinterest.com, especificamente como o número de colunas se ajusta para caber mais / menos no redimensionamento do navegador e o empilhamento vertical não depende da altura das colunas adjacentes. O código-fonte mostra que cada div é a posição absoluta. Um cofundador respondeu a uma postagem do Quora afirmando que isso é feito com jQuery e CSS personalizados. Eu gostaria que os resultados fossem classificados da esquerda para a direita. Qualquer orientação que você pudesse fornecer para fazer isso seria muito apreciada.
104
Respostas:
Você também pode verificar no jQuery Plug-in Masonry , para este tipo de funcionalidade.
fonte
Eu escrevi o script do Pinterest. Os IDs não estão relacionados ao layout e são usados para outro JS relacionado à interação. Esta é a base de como funciona:
Antecipadamente:
Configure uma matriz:
Faça um loop em cada pino:
O resultado é leve. No Chrome, o layout de uma página inteira com mais de 50 pinos leva <10 ms.
fonte
Lançamos um plugin jQuery porque recebemos a mesma pergunta várias vezes para Wookmark . Ele cria exatamente esse tipo de layout. Veja aqui - plugin Wookmark jQuery
fonte
Tendo olhado todas as opções, acabei implementando o layout semelhante ao Pinterest desta forma:
Todos os DIVs são:
Isso faz com que eles se posicionem em linhas melhor do que quando estão flutuando.
Então, quando a página é carregada, eu itero todos os DIVs em JavaScript para remover as lacunas entre eles. Funciona muito bem quando:
O benefício desta abordagem - seu HTML faz sentido para mecanismos de pesquisa, pode funcionar com JavaScript desabilitado / bloqueado por firewall, a sequência de elementos em HTML corresponde à sequência lógica (os itens mais recentes antes dos mais antigos)
fonte
Eles dividem entidades por colunas com ids (solução ruim ... melhor usar nomes de classes) e então calculam posições por grupos de colunas
fonte
display: inline-block
, suponho, mas itens de alturas verticais diferentes não se encaixariam juntos.float:left;
e o último comoverflow: hidden;
) e armazenar elementos láPor que você não tenta isso, coisas simples de js
http://vanilla-masonry.desandro.com/index.html
Ou mesmo isso com jQuery e tendo carregamento de rolagem também.
http://masonry.desandro.com/index.html
fonte
Você poderia usar flutuadores e dimensionar as larguras de div usando porcentagens junto com a largura mínima para forçar os divs a cair automaticamente quando a largura mínima for atingida? É a forma como o fizemos funcionar em http://www.goldtree.co.za/work
fonte