私の問題を示すためにjsFiddleを作成しました:
.outer {
display: inline-block;
vertical-align: top;
overflow: visible;
position: relative;
width: 100%;
height: 100%;
background: red;
}
.inner {
overflow: hidden;
height: 50%;
width: 100%;
margin-top: 25%;
margin-bottom: 25%;
background: blue;
opacity: 0.7;
color: white;
}
<div class="outer">
<div class="inner"></div>
</div>
問題は、div を別の div 内で水平方向に中央に配置する必要がある場合です。内側の div の高さを % (例: 50%) で指定し、次に margin-top と margin-bottom を残り (例: (100 - 50) / 2 = 25 %) に指定します。
しかし、jsFiddle でわかるように、意図したとおりに機能していません。
親からのマージンの計算は機能しますが、要素スタイルのオブジェクトがノックアウト.jsを介してオブジェクトにバインドされており、jsFiddleに示されているように単純ではないため、divの親にアクセスできないため、私には不可能です.
誰かが私を助けてくれることを願っています:-)
bj99
アップデート:
なぜこれが実際に起こっているのかがわかったので、同様の問題を抱えている人のためにここに投稿します。
http://www.w3.org/TR/CSS2/box.html#propdef-margin-topから:
'margin-top', 'margin-bottom' パーセンテージ:包含ブロックの幅を参照
そして、私が高さに苦労したわけではありません:-/