CSS ボックスを垂直方向にセンタリングする 6 つの方法: flex、positioning、margin:auto、displacement、calculation、display: table-cell

方法 1:

flex レイアウト: メイン軸を垂直方向に中央揃え + サイド軸を垂直方向に中央揃え

  <スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

    。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      マージン: 100px 自動 0;

      表示: フレックス;

      正当化コンテンツ: センター;

      整列項目: センター;

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

    }

  </style>

<本体>

  <div class="bigBox">

    <div class="smallBox"></div>

  </div>

</body>

方法 2:

親: 相対位置

子レベル: 絶対配置、上下左右 0 + margin:auto

  <スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

   

。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      マージン: 100px 自動 0;

      位置: 相対;

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

      位置: 絶対;

      マージン: 車;

      上: 0;

      下: 0;

      右: 0;

      左: 0;

    }

  </style>

方法3: 

子レベル: 上と左の余白 = (親ボックスの幅/高さ - ボックスの幅/高さ) の 50% (計算が必要)

 <スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

    。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      マージン: 100px 自動 0;

      オーバーフロー: 非表示;

      /* パディングトップ: 50px; */

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

      マージントップ: 50px;

      左マージン: 50px;

    }

  </style>

方法 4: 

親: 相対位置

子レベル: 親ボックスの左上から絶対位置 + 50%、次に独自の幅と高さの 50% 後ろに移動 (計算が必要)

<スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

    。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      マージン: 100px 自動 0;

      位置: 相対;

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

      位置: 絶対;

      上: 50%;

      左: 50%;

      マージントップ: -100px;

      マージン左: -100px;

    }

  </style>

方法5: 

親: 相対位置

子レベル: 親ボックスの左上から絶対位置 + 50%、x および y 軸上で自身の 50% を移動

(計算する必要はありません。変位を直接使用してください)

 <スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

    。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      マージン: 100px 自動 0;

      位置: 相対;

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

      位置: 絶対;

      上: 50%;

      左: 50%;

      変換: 翻訳(-50%, -50%);

    }

  </style>

方法 6: 

親: 表示: テーブル セル + ベースラインの配置 + テキストの中央揃え

子: ラップされたインライン ブロック

注: display:table-cell 属性は td タグに非常に似ており、margin 値には意味がありません。

 <スタイル>

    * {

      パディング: 0;

      マージン: 0;

      ボックスサイズ: ボーダーボックス;

    }

    。大きな箱 {

      幅: 300px;

      高さ: 300px;

      背景色: プラム;

      /* マージン: 100px auto 0; */

      表示: テーブルセル;

      垂直整列: 中央;

      テキスト整列: 中央;

    }

    。ちいさな箱 {

      幅: 200px;

      高さ: 200px;

      背景色: 黄緑;

      表示: インラインブロック;

    }

  </style>

おすすめ

転載: blog.csdn.net/weixin_48082900/article/details/128953906