This is the best way:
<style type="text/css">
.v-outer {
display: table;
#position: relative;
overflow: hidden;
height: 100px;
background: black;
color: white;
width: 100%;
}
.v-middle {
display: table-cell;
#position: absolute;
#top: 50%;
vertical-align: middle;
}
.v-inner {
#position: relative;
#top: -50%;
}
</style>
<div class="border v-outer">
<div class="v-middle">
<div class="v-inner">
...content...
</div>
</div>
</div>