主人公の画像やフルスクリーンの何かを操作するとき、私は通常、次のビットのCSSを含むテキストまたは画像を見ます:
.item {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
誰かがこのコードが実際に何をしているのか説明してもらえますか?
transform: translate(-50%, -50%)
が必要な理由は、要素の中心をその親の中心に揃えたいからです。簡単に言えば、それはtranslateX(-50%) translateY(-50%)
に要約できます。
これにより、要素の中心が元の左上隅に効果的に移動します。要素に_left: 50%; top 50%
_を設定すると、その左上隅がその親の中心に移動することに注意してください(つまり、視覚的に中央に配置されないことを意味します)。要素をそれぞれ幅と高さの半分だけ左および上に移動すると、その中心が親の中心と一致するようになり、視覚的に水平方向と垂直方向の中心になります。
概念実証として、以下のコードスニペットを参照してください。親の上にカーソルを合わせて、transform: translate(-50%, -50%)
を使用して子要素の「ゴースト」を再配置します。
_body {
margin: 0;
padding: p;
}
.parent {
background-color: #ccc;
width: 100vw;
height: 100vh;
position: relative;
}
.child {
background-color: rgba(0,0,255,0.5);
width: 50px;
height: 50px;
position: absolute;
top: 50%;
left: 50%;
}
.child::before {
background-color: rgba(255, 0, 0, 0.5);
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
content: '';
transition: all .5s ease-in-out;
}
body:hover .child::before {
transform: translate(-50%, -50%);
}
_
_<div class="parent">
<div class="child"></div>
</div>
_