Después de cambiar el flujo a columna, se le da una altura a sus items en combinacion con flex-wrap, para que al alcanzar esa altura rompa con el esquema y coloque el siguiente item a un lado, y el flujo es como si fuera un gusanito:
|¯¯|__|¯¯|__|¯¯|__|¯¯|__|¯¯|__|¯¯|__|¯¯|__|¯¯|__|¯¯|
... si por ejemplo le damos la altura para los items en columna de 250px, y le damos wrap al flex, se dibujará lo ancho del elemento en la altura de 250px, y cuando llegue a esa altura el wrap rompe el esquema y renderiza el siguiente item hasta esa altura. y así hasta el último elemento. height: 250px; flex-wrap: wrap;