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 InnoDB MRR 最適化ガイド

序文MRR は Multi-Range Read の略で、ランダム ディスク アクセスを削減し、ラン...

いくつかのMySQL更新操作のケース分析

目次ケーススタディアカウント残高を更新する直接更新楽観的ロック方式ロックフリーソリューションキューイ...

ニューススタイルのウェブサイトデザイン例25選

bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...

CentOS7におけるKVM仮想化の基本管理の詳しい説明

1. kvm仮想化をインストールする : : : : : : : : : : : : : : : :...

ユーザー エクスペリエンス デザイナーとは誰ですか?

怖いですね! 写真の翻訳: (内側から外側へ)最初のレイヤー:ユーザーエクスペリエンス第2層:コンテ...

NetEase ブログで使用されているシンプルな Web ページ コード

NetEase Blog でコードを使用する方法: まずブログにログインし、ブログのホームページの左...

証明書を使用してリモート Docker サーバーに接続する方法

目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...

VueでTypescriptの設定手順を使用する

目次1. TypeScriptが古いVueプロジェクトに導入されるVue+Typescript プロ...

HTML タイトルに二重引用符を追加する方法

<a href="https://www.jb51.net/" title...

Linux でネットワーク パケット損失と遅延をシミュレートする方法

netem と tc: netem は、Linux カーネル バージョン 2.6 以降で提供されるネ...

10 種類のモダンなレイアウトを実現するための CSS コード

序文日曜日に自宅で web.dev の 2020 3 日間ライブを視聴したところ、興味深い点がたくさ...

Javascript フロントエンド最適化コード

目次if判定の最適化1. 最も簡単な方法:判断2. より良い方法: スイッチ3. より良いアプローチ...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

jQueryのanimateアニメーションメソッドとアニメーションキューイング問題の解決方法の詳しい説明

目次animate() アニメーションメソッドアニメーションキューイングdelay() メソッドアニ...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...