要素の水平方向の中央揃えを実現する3つの方法と、固定レイアウトとフローレイアウトの概念の理解

要素の水平方向の中央揃えを実現する3つの方法と、固定レイアウトとフローレイアウトの概念の理解
CSS でテキストを中央揃えにするプロパティは非常に簡単に実現できます。text-align:center を設定するだけです。ここで言及している「要素」は、実際にはコンテナを指します。より適切なラベルが必要な場合は、div で表す必要があります。
多くのウェブデザイナーは、要素を水平方向に中央揃えするという考えに精通していると思います。しかし、時々、なぜ要素を水平方向に中央揃えにする必要があるのか​​疑問に思うことがあります。理由は何ですか?これらは、私が書き留めた個人的な意見の一部です。

まず、要素を水平方向に中央揃えするには、CSS デザインにおける固定レイアウトと流動レイアウトの概念を理解する必要があります。それらの直感的な違いは、要素に幅が設定されているかどうかです。以下は、固定レイアウトとフロー レイアウトの違いを簡単に示す 2 つのコード スニペットです。
1. 固定レイアウトのデモ:

コードをコピー
コードは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>位置レイアウト</title>
<スタイル タイプ="text/css">
.wrapper{幅:750px;位置:相対;マージン:0自動;テキスト配置:左;}
.contentArea{幅:450px;位置:絶対;上:0;左:150px;高さ:500px;背景:#96c;}
.leftPanel{幅:150px;位置:絶対;上:0;左:0;高さ:500px;背景:#999;}
.rightPanel{幅:150px;位置:絶対;上:0;左:600px;高さ:500px;背景:#06C;}
</スタイル>
</head>
<本文>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</本文>
</html>

2. フローレイアウトのデモ:

コードをコピー
コードは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>col3-margin-layout</title>
<スタイル タイプ="text/css">
.contentArea{余白:0 160px;高さ:500px;背景:#96c;}
.leftPanel{幅:150px;フロート:左;高さ:500px;背景:#999;}
.rightPanel{幅:150px;フロート:右;高さ:500px;背景:#06C;}
</スタイル>
</head>
<本文>
<div class="wrapper">
<div class="leftPanel"></div>
<div class="rightPanel"></div>
<div class="contentArea"></div>
</div>
</本文>
</html>

上記の 2 つの例から、フロー レイアウトでは要素がすべて全画面表示されるため、要素を水平方向に中央揃えすることは不可能であると結論付けることができます。固定レイアウトの場合のみ、幅が制限されているため、要素を水平方向に中央揃えすることが可能です。
第二に、固定レイアウトの実装では、必ずしも要素を水平方向に中央に配置する必要はありません。これを行う理由は、外観に影響を与える大きな空白スペースを片側に持たせるのではなく、ブラウザの両側に均等な余白を確保するためです。
これらはすべて簡単な知識です。それでは本題に入りましょう。
============================================================================
要素を水平方向に中央揃えする方法は 3 つあります。それぞれを 1 つずつ紹介します。次のように
1. 自動マージン方式
これは、Web デザイナーに最も馴染みのある方法です。コンテナーの幅を設定し、margin: auto スタイルを設定する必要があります。コードスニペットは次のとおりです。

コードをコピー
コードは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>位置レイアウト</title>
<スタイル タイプ="text/css">
.wrapper{幅:750px;マージン:0自動;位置:相対;}
.contentArea{幅:450px;位置:絶対;上:0;左:150px;高さ:500px;背景:#96c;}
.leftPanel{幅:150px;位置:絶対;上:0;左:0;高さ:500px;背景:#999;}
.rightPanel{幅:150px;位置:絶対;上:0;左:600px;高さ:500px;背景:#06C;}
</スタイル>
</head>
<本文>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</本文>
</html>

このコードから、この方法はさまざまな主流のブラウザ(IE6 を含む)で適切に表示されることがわかります。IE6 より前のバージョンでは機能せず、要素は依然として左側に配置されます。ブラウザのバージョンが低いという問題を考慮しなければ、これが最も便利です。
2. テキストの中央揃えと自動余白を組み合わせます
この方法は、IE6 より前のバージョンが margin:0 auto をサポートしていないという問題を解決できます。その使用法は、本文に text-align:center スタイルを設定することです。具体的なコードは次のとおりです。

コードをコピー
コードは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>位置レイアウト</title>
<スタイル タイプ="text/css">
本文{text-align:center;}
.wrapper{幅:750px;位置:相対;マージン:0自動;テキスト配置:左;}
.contentArea{幅:450px;位置:絶対;上:0;左:150px;高さ:500px;背景:#96c;}
.leftPanel{幅:150px;位置:絶対;上:0;左:0;高さ:500px;背景:#999;}
.rightPanel{幅:150px;位置:絶対;上:0;左:600px;高さ:500px;背景:#06C;}
</スタイル>
</head>
<本文>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</本文>
</html>

ここで、text-align:center は CSS ハックとして使用されています。これはテキスト スタイルであり、要素を中央揃えにするスタイルを実現するために本文で使用されているため、本来行うべきではないことが行われています...
3. ネガティブマージン方式
このメソッドの実装は、前の 2 つのメソッドよりも複雑です。位置決めと組み合わせて使用​​する必要があります。具体的なコードは次のとおりです。

コードをコピー
コードは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>負のマージン要素の中央</title>
<スタイル タイプ="text/css">
.wrapper{幅:750px;位置:相対;左:50%;左マージン:-375px;}
.contentArea{幅:450px;位置:絶対;上:0;左:150px;高さ:500px;背景:#96c;}
.leftPanel{幅:150px;位置:絶対;上:0;左:0;高さ:500px;背景:#999;}
.rightPanel{幅:150px;位置:絶対;上:0;左:600px;高さ:500px;背景:#06C;}
</スタイル>
</head>
<本文>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</本文>
</html>

まず、コンテナーをドキュメントに対して右に 50% オフセットします。次に、コンテナーの左余白をコンテナー幅の負の半分に設定して、要素を水平方向に中央揃えにします。この方法にはハックがなく、互換性が高いため、幅広いブラウザで一貫したパフォーマンスを発揮できます。
上記は、私が知っている要素の水平方向の中央揃えを実現する 3 つの方法です。いずれも比較的簡単なので、復習と知識のまとめとして書き留めておきます。

<<:  CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

>>:  初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習

推薦する

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...

Vueは移動可能なフローティングボタンを実装します

この記事の例では、どこにでも移動できるフローティングボタンを実現するためのVueの具体的なコードを共...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

Mysql 8.0 のインストールとパスワードのリセットの問題

Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...

Linuxドライバのプラットフォームバスの詳細説明

目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...

SSH接続を介してXshellを使用したUbuntu 20.04で報告されたサービス問題の詳細な説明

1. 最近、Ubuntu の新しいバージョンをインストールしました。/etc/ssh/sshd_co...

条件付きコメント形式の書き方とサンプルコード

フロントエンドエンジニアとして、IE は私たちにとって馴染み深いものであるはずです。設計案を実装する...

Mariadb リモート ログイン構成と問題解決

序文:インストール プロセスについては詳しく説明しません。問題に直接触れましょう。MySQL のリモ...

CSS3 カスタムスクロールバースタイル::webkit-scrollbar サンプルコード詳細説明

Windows のデフォルトのスクロール バー スタイルは見苦しく、プロジェクト内でスクロール バー...

Reactにおける制御されたコンポーネントと制御されていないコンポーネントの簡単な分析

目次制御されていないコンポーネント制御コンポーネント知らせ結論は制御されていないコンポーネントフォー...

MySQLにおけるMTRの概念

MTR は Mini-Transaction の略です。名前が示すように、これは「最小のトランザクシ...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...

MySQL 5.7 で my.ini ファイルが見つからない場合の解決策

my.ini とは何ですか? my.ini は、MySQL データベースで使用される設定ファイルです...

追加、削除、変更、クエリを実行するための JS 操作オブジェクト配列のサンプルコード

1. はじめに最近、私は友人が JSON 配列を追加、削除、変更するための簡単なページを作成するのを...