親ボックスの水平方向と垂直方向に子ボックスを中央揃えする方法の概要

声明:以下の内容は個人的な研究の要約であり、本来の意図は彼ら自身の研究とレビュー記録を促進することです。間違いがあれば訂正してください!

効果を得るには(緑のボックス(子ボックス)を赤のボックス(親ボックス)の中央に表示します):

ここに画像の説明を挿入

1.ポジショニング:息子と父

一般に、子ボックスは絶対位置を使用し、親ボックスは相対位置を使用します。他のコードを少し追加するだけです。
方法1:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
     
     
            width: 800px;
            height: 500px;
            border: 1px solid red;
            /* 父盒子相对定位,占据位置 */
            position: relative;
        }
        
        .box2 {
     
     
            width: 300px;
            height: 150px;
            border: 1px solid green;
            /* 子盒子绝对定位,不占据位置 */
            position: absolute;
            /*子盒子相对于父盒子的宽和高移动50%(即移动宽和高为父盒子的50%)  */
            top: 50%;
            left: 50%;
            /* 再回退到自身盒子宽和高的一半(由于坐标原点在左上角,向右移动为正值,向左移动为负值,所以这里为负值) */
            margin-left: -150px;
            margin-top: -75px;
        }
    </style>
</head>

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

</html>

方法2:css3でtranslateを使用すると、子ボックスの幅と高さを計算する必要はありません。移動する幅と高さは、それ自体の幅と高さを基準にして計算されるためです。
ここに画像の説明を挿入
方法3:子ボックスの上部、右側、下部、左側を0に設定し、マージンを自動に設定します
ここに画像の説明を挿入

2.フレックスレイアウト

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
     
     
            width: 800px;
            height: 500px;
            border: 1px solid red;
            /* flex布局默认主轴是 x 轴 row */
            display: flex;
            /* 设置子元素在主轴上居中对齐 */
            justify-content: center;
            /* 设置子元素在侧轴上居中对齐 */
            align-items: center;
        }
        
        .box2 {
     
     
            width: 300px;
            height: 150px;
            border: 1px solid green;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>

    </div>
</body>
</html>

おすすめ

転載: blog.csdn.net/pilgrim_121/article/details/111311678