vertical-align
has a deceiving name. It doesn't actually vertically align elements in the way that you think it does.
If your child has only one line of text, you can use the line-height
trick to center it:
.parent {
line-height: 160px; /* Height of the parent */
}
Demo: http://jsfiddle.net/vVAdZ/
Another way is to fake a table:
.parent {
display: table;
}
.child {
display: table-cell;
vertical-align: middle;
}