私はこの質問が古いことを知っていますが、私にとっては完璧な回避策であることがわかりました。
このcssを中央に配置するdivに追加します。
div:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
これは毎回機能し、クリーンです。
編集:わかりやすくするために、私はscssを使用しており、垂直方向に中央揃えにしたい直接の子であるすべての親に含める便利なミックスインがあります。
@mixin vertical-align($align: middle) {
&:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: $align;
// you can add font-size 0 here and restore in the children to prevent
// the inline-block white-space to mess the width of your elements
font-size: 0;
}
& > * {
vertical-align: $align;
// although you need to know the font-size, because "inherit" is 0
font-size: 14px;
}
}
完全な説明:
div:before
div内で、その子の前に要素を追加します。使用する場合、:before
または宣言を:after
使用する必要がある場合、content:
それ以外の場合は何も起こりませんが、この目的のために、コンテンツを空にすることができます。次に、親の高さが定義されていて、この要素が少なくともインラインブロックである限り、要素に親と同じ高さを指定します。動作が異なるのvertical-align
とは対照的に、親に関連する自己の垂直位置を定義しtext-align
ます。
@mixin
宣言はSASSユーザーのためであり、それは次のように使用することになります。
div {
@include vertical-align(middle)
}