vertical-alignはもともとtable tdタグかインライン要素用で、ブロック要素には効かない。
これは有効
<style>
.etc {
width:300px;
height:300px;
border: 5px solid #f00;
}
.table-cell {
display:table-cell;
}
.middle{
vertical-align:middle;
}
</style>
<div class="middle table-cell etc">
てす てす てす
</div>
子要素にブロック要素を使いたいときは
<div class="middle table-cell etc">
<div>てす てす てすと</div>
</div>
<div class="middle table-cell etc">
<p>てす てす てす</p>
</div>
親要素にfloatがあると、親要素のheightは考慮されないので、
これはうまくいかない
<style>
.float {
float:left;
}
</style>
<div class="float middle table-cell etc">
<div>てす てす てすと</div>
</div>
親要素に display:table を指定する
<style>
.table {
display:table;
}
</style>
<div class="table float etc">
<div class="table-cell middle">てす てす てすと</div>
</div>