From http://timseverien.nl/2013/10/css-alignment-and-sizing/