Estoy buscando replicar el diseño div de Pinterest.com, específicamente cómo se ajusta el número de columnas para adaptarse más / menos al cambio de tamaño del navegador y el apilamiento vertical no depende de las alturas de las columnas adyacentes. El código fuente muestra que cada div es posición absoluta. Un cofundador ha respondido una publicación de Quora indicando que se hace con jQuery y CSS personalizados. Me gustaría que los resultados estuvieran ordenados de izquierda a derecha. Cualquier dirección que pueda proporcionar para hacerlo yo mismo será muy apreciada.
104
Respuestas:
También puede verificar en jQuery Plug-in Masonry , para este tipo de funcionalidad.
fuente
Escribí el guión de Pinterest. Los ID no están relacionados con el diseño y se utilizan para otros JS relacionados con la interacción. Aquí está la base de cómo funciona:
Antemano:
Configurar una matriz:
Pase por cada pin:
El resultado es ligero. En Chrome, diseñar una página completa de más de 50 pines toma menos de 10 ms.
fuente
Lanzamos un complemento de jQuery porque recibimos la misma pregunta varias veces para Wookmark . Crea exactamente este tipo de diseño. Véalo aquí: complemento Wookmark jQuery
fuente
Después de ver todas las opciones, terminé implementando un diseño similar a Pinterest de esta manera:
Todos los DIV son:
Esto hace que se coloquen mejor en filas que cuando están flotando.
Luego, cuando se carga la página, itero todos los DIV en JavaScript para eliminar los espacios entre ellos. Funciona aceptablemente bien cuando:
El beneficio de este enfoque: su HTML tiene sentido para los motores de búsqueda, puede funcionar con JavaScript desactivado / bloqueado por el firewall, la secuencia de elementos en HTML coincide con la secuencia lógica (los elementos más nuevos antes que los más antiguos)
fuente
Dividen entidades por columnas con identificadores (mala solución ... mejor use los nombres de clase) y luego calculan las posiciones por grupos de columnas
fuente
display: inline-block
Supongo que podría usarlo , pero los elementos de diferente altura vertical no se colocarían juntos.float:left;
y último conoverflow: hidden;
) y almacenar elementos allí¿Por qué no intentas esto, cosas simples de js?
http://vanilla-masonry.desandro.com/index.html
O incluso esto con jQuery y con carga de desplazamiento también.
http://masonry.desandro.com/index.html
fuente
¿Podría usar flotadores y dimensionar sus anchos de div usando porcentajes junto con el ancho mínimo para forzar que los divs caigan automáticamente una vez que se alcanza el ancho mínimo? Es la forma en que lo hicimos funcionar en http://www.goldtree.co.za/work
fuente