要素のY軸を50%移動すると、親の高さの50%ではなく、自分の高さの50%が下に移動します。翻訳要素に、親要素に基づいた翻訳割合を指示するにはどうすればよいですか?それとも私は何かを理解していないのですか?
変換でパーセンテージを使用する場合、それはそれ自体の幅または高さを指します。 https://davidwalsh.name/css-vertical-center ( demo )を見てください:
CSS変換の興味深い点の1つは、パーセント値を適用すると、上、右、下、左、マージン、パディングなどのプロパティとは対照的に、実装される要素の次元に基づいて値を決定することです。 、親の寸法のみを使用します(または、最も近い相対的な親を使用する絶対配置の場合)。
ビューポートサイズに基づいて変換するには、vwとvhを使用できます
@keyframes bubbleup {
0% {
transform: translateY(100vh);
}
100% {
transform: translateY(0vh);
}
}
CSSのみ を使用して私にとってうまくいくのは:
.child {
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/* Backward compatibility */
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
使い方:
Translateプロパティでパーセンテージを使用するには、Javascriptを使用する必要があります。 http://jsfiddle.net/4wqEm/27/
HTMLコード:
<div id="parent">
<div id="children"></div>
</div>
CSSコード:
#parent {
width: 200px;
height: 200px;
background: #ff0;
}
#children {
width: 10%;
height: 10%;
background: #f00;
}
Javascriptコード:
parent = document.getElementById('parent');
children = document.getElementById('children');
parent_height = parent.clientHeight;
children_translate = parent_height * 50/100;
children.style.webkitTransform = "translateY("+children_translate+"px)";
私はあなたを助けることができ、他の問題がある場合は私に言うことができると思います。
あなたの声明は、非常に翻訳された要素に由来するパーセンテージについて絶対に正しいです。ケースでtranslateプロパティを使用する代わりに、絶対位置を使用して親divを基準にしたままにする必要があります。ここで絶対に垂直に赤いdivを配置しました:(親divに相対的な位置を追加することを忘れないでください。静的デフォルト以外に配置する必要があります):
body {
margin: 0;
width: 100%;
height: 100%;
}
body > div {
width: 200px;
height: 200px;
background: #ff0;
position: relative;
}
body > div > div {
width: 10%;
height: 10%;
-webkit-transform: translateY(-50%);
background: #f00;
position: absolute;
top: 50%;
}
また、1つの追加ブロックを使用して、子ノードを除くトランジションを使用することもできます
HTMLコード:
<div id="parent">
<div id="childrenWrapper">
<div id="children"></div>
</div>
</div>
cssはこのようなものでなければなりません
#parent {
position: relative;
width: 200px;
height: 200px;
background: #ff0;
}
#childrenWrapper{
width: 100%;
height: 100%;
}
#children {
width: 10%;
height: 10%;
background: #f00;
}
次のURLで必要なポジショニングで分岐 作業サンプル
body {
margin: 0;
width: 100%;
height: 100%;
}
body>div {
position: relative;
width: 200px;
height: 200px;
background: #ff0;
}
body>div>div {
position: absolute;
left: 50%;
top: 50%;
width: 10%;
height: 10%;
background: #f00;
transform: translate(-50%, -50%);
}
ノート :
要素を絶対位置に配置し、leftおよびtopプロパティを使用して、パーセント値を親として使用できます。
この問題の解決策は、変換をまったく使用しないことです。要素を翻訳する場合、選択する割合は要素の高さに基づきます。
親の高さに基づいて要素を配置する場合は、top:50%を使用します。
したがって、コードは次のようになります。
body {
margin: 0;
width: 100%;
height: 100%;
}
body > div {
width: 200px;
height: 200px;
background: #ff0;
position: relative;
}
body > div > div {
position: absolute;
top: 50%;
width: 10%;
height: 10%;
/* -webkit-transform: translateY(50%); */
background: #f00;
}