CSS で水平方向と垂直方向に中央揃えする 10 の方法を教えます (要約)

CSS で水平方向と垂直方向に中央揃えする 10 の方法を教えます (要約)

面接には必需品、仕事でも必ず使います。うーん、誰でも分かるでしょう。これ以上何も言わずに、要約とレンダリングを投稿します。

要約する

  • PC側には互換性の要件があり、サブ要素の幅と高さは固定で、絶対値+負のマージンが推奨されます
  • PC側には互換性の要件があり、サブ要素の幅と高さは固定されていないため、absolute + transformが推奨されます
  • PC側に互換性要件はありません。flexが推奨されます。
  • モバイルデバイスにはFlexが推奨されます

ここに画像の説明を挿入

上の写真のような効果を実現するにはどうすればよいでしょうか? ここでは、よく使われる 10 の方法を紹介します。まず、共通のテンプレートスタイルを作成します

<テンプレート>
  <div class="two">
    <div class="parent">
      <div class="child">123</div>
    </div>
  </div>
</テンプレート>

<style lang="less" スコープ>
。親{
  マージン: 0 自動;
  幅: 300ピクセル;
  高さ: 300px;
  境界線: 1px 実線の赤;
  ボックスのサイズ: 境界線ボックス;
  。子供 {
    高さ: 100px;
    幅: 100ピクセル;
    背景: #2f8df0;
  }
}
</スタイル>

次に、使用する具体的なスタイルをメソッド内で別途記述します。まず、日常的なレイアウトテクニックを 4 つ紹介します。

1. div を div 内の水平方向の中央に配置し、子要素の幅を設定します。

。親{
	幅:300ピクセル;
    マージン:0 自動;
}

注意: 子要素がdisplay:table-cellを設定している場合、 margin:0 auto;無効になります。

2. テキストを垂直方向に中央揃えに設定し、テキストを含む div の高さを設定します。

。子供{
    テキスト配置: 中央
    line-height:100px //子要素の高さがわかっているので、高さと同じ高さを設定します}

3. 2 つ以上のブロックレベル要素が垂直方向に中央揃えされ、親要素によって高さと行の高さが等しくなるよう設定されます。

 。親{
     line-height: 300px; //親要素の高さを把握し、その高さと同じ高さを設定します }
   .child1{
    表示: インラインブロック;
    垂直位置合わせ: 中央;
    line-height: initial; //initial キーワードは、CSS プロパティをデフォルト値に設定するために使用されます。
   }
   .child2{
    表示: インラインブロック;
    垂直位置合わせ: 中央;
    line-height: initial; //initial キーワードは、CSS プロパティをデフォルト値に設定するために使用されます。
   }

4. 要素を現在のコンテナ全体に配置して絶対値を設定する

。親{
位置: 絶対;
上: 0;
下部: 0;
左: 0;
右: 0;
}

はい、以上です。では、CSS を使用して水平方向と垂直方向の中央揃えを実現する方法から始めましょう。

1. 子要素の幅と高さを設定する必要はありませんが、親要素の高さを設定する必要があります。絶対 + 変換を使用する (推奨)

。親{
   位置: 相対 
}
。子供{
    位置: 絶対;
    上位:50%;
    残り:50%;
    変換:translate(-50%,-50%)
}

// 注意: 上下に中央揃えする必要がある場合は、上だけを残し、左右に中央揃えする必要がある場合は、左だけを残します。translateY(-50%) または translateX(-50%) を設定します。

2. 子要素の幅と高さを設定する必要はなく、親要素の幅と高さを設定する必要もありません。 フレックスレイアウトを使用する(モバイルデバイスではフレックスを直接使用することをお勧めします)
PC 側では、どのような互換性が必要かを確認する必要があります。 )

。親{
  ディスプレイ:フレックス;
  アイテムを中央揃えにします。
  コンテンツを中央揃えにする。
}
。子供{
 
}

3. 子要素の幅と高さを設定する必要はありませんが、親要素の高さを設定する必要があります。 lineheightを使用します。
注: この方法では、text-alignを使用して子要素のテキスト表示を希望の効果にリセットする必要があります。

。親{
    line-height: 300px; //高さを親要素と同じに設定します text-align: center;
}
。子供{
    表示: インラインブロック;
    垂直位置合わせ: 中央;
    line-height: initial; //initial キーワードは、CSS プロパティをデフォルト値に設定するために使用されます。
    text-align: left; //テキスト表示を希望の効果にリセットします}

4. 子要素の幅と高さを設定する必要はありませんが、親要素の高さは設定する必要があります。 css-tableを使用します (この要素のmargin:0 auto使用後に無効になります)

。親{
    表示: テーブルセル;
    垂直位置合わせ: 中央;
    テキスト配置: 中央;
}
。子供{
  表示: インラインブロック;
}

5. 子要素の幅と高さを設定し、親要素の高さを設定します。 絶対値+負のマージンを使用する

。親{
   位置: 相対 
}
。子供{
    位置: 絶対;
    上位: 50%;
    左: 50%;
    margin-left: -50px; //サブ要素の幅と高さを知る margin-top: -50px; //サブ要素の幅と高さを知る}

6. 子要素の幅と高さを設定し、親要素の高さを設定します。 absolute + margin autoを使用する

。親{
   位置: 相対 
}
。子供{
    位置: 絶対;
    上: 0;
    左: 0;
    右: 0;
    下部: 0;
    マージン: 自動;
}

7. 子要素の幅と高さを設定し、親要素の高さを設定します。 absolute + calcを使用します (このメソッドの互換性は calc の互換性に依存します)

。親{
   位置: 相対 
}
。子供{
    位置: 絶対;
    上: calc(50% - 50px);
    左: calc(50% - 50px);
}

8.書き込みモードを使用する(使い方が複雑なので、お勧めしません)

 // 共通スタイルは上部にあります <div class="parent">
      <div class="box-child">
        <div class="child">123</div>
      </div>
    </div>
。親{
     writing-mode: vertical-lr; //テキスト表示の方向を変更します。text-align: center;
}
.box-child{
    書き込みモード: 水平方向tb;
    表示: インラインブロック;
    テキスト配置: 中央;
    幅: 100%;
}
。子供{
    text-align: left; //テキスト表示を希望の効果にリセットします margin: 0 auto;
}

9. 子要素の幅と高さを設定する必要はなく、親要素の幅と高さを設定する必要もありません。 グリッドレイアウトを使用する (推奨されません。現在、互換性があまり良くありません)

。親{
    表示: グリッド;
}
。子供{
     位置合わせ: 中央;
     自己正当化: 中央揃え;
}

10. テーブル レイアウトを使用する (これは単なる方法論です。今でもテーブル レイアウトを使用している人はいません、ハハハ)

<テーブル>
    <t本文>
        <tr>
            <td class="親">
                <div class="child">123</div>
            </td>
        </tr>
    </tbody>
</テーブル>
。親{
    テキスト配置: 中央;
}
。子供{
    表示: インラインブロック;
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

>>:  js における関数のネストとクロージャの詳細

推薦する

Mysql の追加、削除、変更、クエリステートメントのシンプルな実装

Mysql の追加、削除、変更、クエリステートメントのシンプルな実装追加されたレコード: テーブル名...

中国語でのNginx設定パラメータの詳細な説明(負荷分散とリバースプロキシ)

PS: 最近、nginx を詳細に紹介している <<High-Performance ...

WeChatアプレットにナンバープレート入力機能を実装

目次序文背景大きな推測パターンを見つける構造とスタイルコンポーネントの実装パラメータキーボードの種類...

古典的なJavaScriptの再帰ケースの質問の詳細な分析

目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....

MySQL でデータ復旧に binlog を使用する方法

序文最近、オンラインでデータが誤って操作されました。データベースが直接変更されたため、それを回復する...

HTML でスクロールバーを非表示にしたり削除したりする方法

1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...

大量のデータを含むエレメントのシャトルボックスで「すべて選択」をクリックするとスタックする問題の解決方法

目次解決策1: EUIの転送コンポーネントをコピーして変更し、プロジェクトディレクトリに導入する解決...

CenOS6.7 mysql 8.0.22 のインストールと設定方法のグラフィックチュートリアル

CenOS6.7 は MySQL8.0.22 (推奨コレクション) をインストールします1. MyS...

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...

Node.js http モジュールの使用

目次序文ウェブHTTP サーバーファイルサーバー練習する序文Node.js 開発の目的は、JavaS...

uniapp は日付と時刻の選択機能を実装します

この記事の例では、日付と時刻の選択を実装するための uniapp の具体的なコードを参考までに共有し...

非常に詳細な MySQL8.0.22 のインストールと設定のチュートリアル

みなさんこんにちは。今日は、MySQL 8.0.22 のインストールと構成について学習します。注意深...

Docker に MySQL をデプロイする例

目次1 コンテナクラウドとは何ですか? 2 Dockerの紹介3 dockerを使ってMySQLをイ...

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリと my-default.ini がなく、サービスが起動できない問題の簡単な解決方法 (問題概要)

私は SQL の初心者で、オープンソースのインストールは非常に簡単だと思っていましたが、その過程でい...

mysql 計算関数の詳細

目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...