Try using top and botton margins, that sometimes works. I'm decent in CSS but never really found an efficient way of doing this in a div.
Code:
margin-top:50%;
margin-bottom: 50%
If that doesn't work:
If that doesn't work:
You could try using tables, but using a conditional to count the number of td's in a row and add a row break after x amount of things. Being an intermediate PHP coder myself I would think that would be easy to conceptionalize, but would be a last resort.
Try Googling as well, there has to be something.