Es que a priori con table-cell te debería de funcionar:
Código CSS:
Ver originalsection {
display: table-cell;
vertical-align: middle;
}
Pero claro, si section no va desde el header hasta el footer, entonces el contenido estará centrado, pero no tiene la altura indicada.
Si no, aparte de eso, prueba con algo como:
Código CSS:
Ver originalhtml, body {
height: 100%;
}
header {
height: 100px;
}
footer {
height: 50px;
}
section {
height: calc(100% - 150px); /* header + footer */
}