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 における関数のネストとクロージャの詳細

推薦する

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

Docker で Ubuntu に Python3 と Pip をインストールする際の問題

文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...

Web2.0: 情報過多の原因と解決策

<br />情報の重複、情報過多、情報強迫、パーソナライズされたカスタマイズ、検索エンジ...

MySQLのネストされたトランザクションで発生する問題

MySQL はネストされたトランザクションをサポートしていますが、それを実行する人は多くありません....

Linux システムでデプロイメント プロジェクトを設定する方法

1. ファイアウォールの設定を変更し、対応するポートを開きますLinux システムのファイアウォール...

MySQL のロングトランザクション例の詳細な説明

序文: 「MySQL 入門」シリーズの記事は終了しました。今後も引き続き MySQL に焦点を当て、...

Nginx 仮想ホスト (IP ベース) を構成する 3 つの方法の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...

JS を使用した簡単な雪効果の例の詳細な説明

目次序文主な実装コードHTMLコードJSコード序文南の友達の多くは、雪をほとんど見たことがない、ある...

カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較

1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...

Docker は Python Flask+ nginx+uwsgi コンテナを構築します

Nginxをインストールするまずcentosイメージをプルしますdocker pull centos...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

HTMLコードテキストボックスの制限入力テキストボックスが灰色になり、制限テキストボックスの入力

方法 1: readonly 属性を true に設定します。入力値=読み取り専用 readOnly...

Docker コンテナ入門から夢中になるまで(推奨)

1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...