CSS で垂直方向の中央揃えを実装するいくつかの方法の概要

CSS で垂直方向の中央揃えを実装するいくつかの方法の概要

フロントエンドのレイアウト プロセスでは、水平方向の中央揃えを実現するのは比較的簡単で、通常は margin:0 auto; と親要素の text-align: center; によって実現できます。しかし、垂直方向の中央揃えを実現するのはそれほど簡単ではありません。以下では、私が作品で垂直方向の中央揃えを実現するために使用しているいくつかの方法を紹介します。

1. 行の高さは高さと等しい/行の高さのみを設定する

この方法は、テキストを中央揃えするのに適しています。 コアは、行の高さをそれを囲むボックスの高さと同じに設定するか、高さを設定せずに行の高さを設定することです。 この方法は、テキストが中央揃えされ、高さが固定されているシーンに適しています。 使用すると便利で役立ちます。

//html
<div class="middle">555</div>
 
//css
。真ん中{
  高さ: 50px;
  行の高さ: 50px;
  背景: 赤;
} 

注目すべきは

インライン要素の場合は高さがないので、まずインライン要素をインラインブロックまたはブロック要素に変換する必要があります。

2. 垂直位置合わせ: 中央

この種の要素の中央揃えでは、親要素の行の高さが自身の高さと等しい必要があり、この要素はインライン ブロック要素です。 3 つの条件がすべて満たされた場合にのみ、垂直方向のセンタリングを実現できます。コードは次のとおりです。

//html
<div class="main">
   <div class="middle"></div>
</div>

//css
。主要 {
  幅: 200ピクセル;
  高さ: 300px;
  行の高さ: 300px;
  背景: #dddddd;
}
。真ん中{
  背景: 赤;
  幅: 200ピクセル;
  高さ: 50px;
  display: inline-block; // または display: inline-table;
  垂直位置合わせ: 中央;
} 

この方法では固定の行の高さが必要であり、実際に達成される中央揃えは真の中央揃えではなく、近似中央揃えであることに注意してください。

3. 絶対位置と負のマージン

この方法の核となるのは、まず中央に配置する要素を絶対位置に設定し、次にその top: 50%; に要素自体の高さの負の半分に等しい margin-top を加えて中央に配置することです。利点は、実装が簡単で、親要素の高さをパーセンテージで指定でき、行の高さを設定する必要がないことです。コードは次のとおりです。

//html
<div class="main">
  <div class="middle"></div>
</div>
  
//css
。主要 {
  幅: 60ピクセル;
  高さ: 10%;
  背景: #dddddd;
  position: relative; //親要素は相対位置に設定されます}
。真ん中{
  position: absolute; //絶対位置に設定します top: 50%; //上の値は50%です
  margin-top: -25%; // margin-top を要素の高さの半分に設定します width: 60px;
  高さ: 50%;
  背景: 赤;
}

4. 絶対位置と margin:auto

まずコード:

//html
<div class="main">
  <div class="middle"></div>
</div>
  
//css
。主要 {
  幅: 60ピクセル;
  高さ: 10%;
  背景: #dddddd;
  position: relative; //親要素は相対位置に設定されます}
。真ん中{
  幅: 30%;
  高さ: 50%;
  position: absolute; //絶対位置に設定します top: 0;
  bottom: 0; // 上と下を 0 に設定します。
  left: 0; //left と right も 0 に設定すると、水平方向と垂直方向の両方の中央揃えを実現できます right: 0;
  マージン:自動;
  背景: 赤;
}

この方法の利点は、垂直方向のセンタリングだけでなく、水平方向のセンタリングも実現できることです。欠点は、ネットワークやパフォーマンスが悪い場合に、ボックスが直接固定されず、ユーザーエクスペリエンスが低下する可能性があることです。

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

フレックスレイアウトは垂直方向と水平方向の中央揃えを簡単に実現できるため、多くの利点があり、モバイル端末で広く使用されています。欠点は、ブラウザの互換性が低いことです。コードは次のとおりです。

//html
<div class="main">
  <div class="middle"></div>
</div>
 
//css
。主要 {
  幅: 60ピクセル;
  高さ: 10%;
  背景: #dddddd;
  display: flex; //flexに設定
  justify-content: center; // 水平中央 align-items: center; // 垂直中央}
。真ん中{
  幅: 30%;
  高さ: 50%;
  背景: 赤;
} 

要約する

上記は、私が紹介した CSS で垂直方向の中央揃えを実現するいくつかの方法の要約です。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信します。

<<:  無視されたDOCTYPE記述の分析

>>:  シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

推薦する

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

Vue の this.$store.state.xx.xx に関する簡単な説明

目次これを Vue.$store.state.xx.xxストアからデータを取得する私のプロジェクトフ...

MySQL 8.0 バージョンで getTables がすべてのデータベース テーブルを返す問題の簡単な分析

序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...

Linuxでサーバーのハードウェア情報を表示する方法

みなさんこんにちは。今日は12連休ですが、何かお買い物はしましたか?今日は「Linux View S...

MySQLサービスを削除する具体的な方法

MySQLは次のエラーを表示します「コントロール パネル -> 管理ツール -> サービ...

MySQL メタデータで Hive テーブル作成ステートメントのコメント スクリプトを生成する方法

序文この記事は主にMySQLメタデータ生成Hiveテーブル作成ステートメントコメントスクリプトに関す...

tomcat+nginx を使用してマルチアプリケーション デプロイメントを実装するためのサンプル コード

目次マルチアプリケーションの展開1-Tomcat 構成1.1- プロジェクト構成1.2-サービス構成...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

a タグをクリックして入力ファイルのアップロードダイアログボックスを表示する方法

htmlコードをコピーコードは次のとおりです。 <SPAN class=tag><...

mysql の find_in_set 関数の基本的な使い方

序文これは私が最近見つけた新しい機能です。プロジェクトでの私の使用シナリオは次のとおりです。アプリケ...

Vueはdivホイールのズームインとズームアウトを実装します

Vue プロジェクトで div ホイールのズームインとズームアウト、ドラッグ効果、キャンバス効果に似...

JS でモバイルのインタラクティブ エクスペリエンスを向上させる方法

目次1. 即時フィードバック1.1 ボタンからの即時フィードバック1.2 継続的なフィードバック1....

SSL で Nginx リバース プロキシを構成する簡単な手順

序文リバース プロキシは、Web 経由で行われたリクエスト (http と https の両方) を...

ROS で Turtlebot3 移動ロボットを制御するための基本的なチュートリアル

中国語チュートリアルhttps://www.ncnynl.com/category/turtlebo...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...