CSS の vertical-align プロパティとベースラインの問題に関する深い理解

CSS の vertical-align プロパティとベースラインの問題に関する深い理解

vertical-align属性は、主にインライン要素の配置を変更するために使用されます。インラインレイアウトに大きな影響を与えます。これを理解していないと、スタイルの開発や調整時に間違いを犯しやすくなります。

このプロパティの原理はインターネット上では非常に複雑で、一見すると難しそうに見えます。その原理を完全に理解する必要はありません。ルールさえ理解していれば、それを使用することができます。ここで私の理解を共有します。

ベースライン

vertical-align屬を理解するには、ベースラインを理解する必要があります。ベースラインをどのように理解すればよいでしょうか?

1. Web ページは長方形のディスプレイ画面上に作成され、多くの場合、行ごとにレイアウトされます。必然的に、1 行に複数のコンテンツが含まれることになりますが、この行のコンテンツを上下に揃えるにはどうすればよいでしょうか。答えは、デフォルトでベースラインを揃えることです。

2. さまざまなフォント、画像、インライン HTML 要素、その他の表示可能なコンテンツには、それぞれ独自のベースラインがあります。特定のコンテンツのベースラインを知るには、小文字の「x」という簡単な参照を見つけることができます。なぜそれを見つけるのでしょうか?英語の文字のベースラインが小文字の「x」の下部にあるため、見やすくなります。

上記の 2 つのポイントを知っておくと、他のコンテンツ要素のベースラインの位置を簡単に判断できます。他の要素と小文字の「x」を 1 行に配置すると、一目でわかります。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
  <メタ文字セット="UTF-8">
  <title>ドキュメント</title>
  <スタイル>
    div {
      境界線: 1px 実線シアン;
      フォントサイズ: 30px;
    }
    div.span1{
      表示: インラインブロック;
      背景色: 緑;
    }
    div.span2{
      表示: インラインブロック;
      オーバーフロー: 非表示;
      背景色: 緑;
    }
  </スタイル>
</head>
<本文>
  <div>
    x
    <img src="./demo.jpg" alt="">
    中国語の文字 <input type="text">
    <button>ボタン</button>
    <span class="span1">span1</span>
    <span class="span2">span2</span>
  </div>
</本文>
</html> 

上図に示すように、この行の要素のベースラインは赤です。画像とoverflow:hiddenスタイルの要素のベースラインの位置は下部にあり、中国語、入力ボックス、 buttonのベースラインの位置はすべて下中央の位置にあることがわかります。これらのインライン要素の配置は、まずベースラインを上下に揃え、次に親要素を展開することがわかります。

注目すべき点の 1 つは、画像を div に直接配置すると、画像の下部と div の下部の間に隙間ができることです。これは、インライン要素のベースラインを揃えた後、親要素のフォント ベースラインと一致している必要があるためです。言い換えると、各インライン要素のベースラインは、親要素のフォント ベースラインと揃っている必要があります。 ただし、親要素の行の高さとフォント サイズのスタイルが変更されると、親要素のフォント ベースラインの位置が変更され、行内の要素の位置が全体的に上下に移動します。画像のみが表示され、テキストは表示されませんが、親要素にはデフォルトのline-heightfont-sizeがあり、レイアウトに静かに影響します。下の図に示すように、小文字の「x」が div に配置され、その下部が隙間を占めていることがわかります。したがって、この理由を理解した上で、このギャップを削除したい場合は、親要素のline-heightfont-size 0 に設定するか、画像をブロック レベル要素に設定して、画像が 1 行だけを占めるようにするだけです。同様に、div 内に入力ボックスを直接配置すると、入力ボックスの上に隙間ができます。これに似ていますが、画像と入力ボックスのベースラインの位置が異なります。

vertical-align プロパティ

上記のインライン要素の並べ替えの原則を理解した後、次のような疑問が生じるかもしれません。一部のインライン要素をベースラインに従って配置したくない場合はどうすればよいでしょうか。答えは、 vertical-alignプロパティを使用することです。

まず、 vertical-align プロパティはインライン要素にのみ有効です。これは、現在のインライン要素と親要素のフォントの配置を変更します。デフォルト値はbaselineです。つまり、上でテストしたように、2 つのベースラインが揃っています。

属性値の詳細については、https://developer.mozilla.org/zh-CN/docs/Web/CSS/vertical-align を参照してください。検証のために属性を切り替えるには、div に小文字の「x」と画像を追加するだけです。

簡単に説明すると、次の 2 つのプロパティがあります。

1. 属性が「%」に設定されている場合、現在のインライン要素の line-height 属性値の比率を参照します。正または負の値に設定できます。インライン要素のベースラインは、親要素のフォント ベースラインに対してこのパーセンテージだけ上または下に移動します。以下に示すように、画像をvertical-align: 50%; line-height: 30px設定します。画像の下部は「x」の下部と揃うはずですが、現在は 15px 上方に移動しています。-50% の場合は、15px 下方に移動します。もちろん、 length,vertical-align:15px;と直接設定しても効果は同じです。

2. 属性が「middle」に設定されている場合、インライン要素の中央の位置は、親要素のフォント ベースラインの上の 1/2「x-height」の位置に揃えられます。「x-height」は、実際には親要素の小文字「x」の高さです。簡単に言えば、インライン要素の中央の位置は、親要素の小文字「x」の中央の位置 (x の交点) に揃えられ、2 つの中央を揃えることと同じです。

要約する

CSS の vertical-align プロパティとベースラインの問題に関する詳細な理解に関するこの記事はこれで終わりです。CSS の vertical-align プロパティとベースラインに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

<<:  Windows の MySQL net start mysql MySQL サービスの起動エラーが発生する システムエラーの解決

>>:  HTML+CSS+jQuery はスクリーンショットで検索ホットリストタブ効果を模倣します

推薦する

JavaScript の遅延読み込み属性パターンに関する簡単な説明

目次1. はじめに2. オンデマンド属性モード3. 乱雑な遅延読み込み属性パターン4. クラスの唯一...

JavaScript でカウントダウン効果を実装する

カウントダウン効果を実現するにはJavascriptを使用します。参考までに、具体的な内容は次のとお...

Mysql マスタースレーブ サービスの実装例を構成する

Mysql マスタースレーブ サービスの実装例を構成する### メインデータベースmy.cnfを構成...

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法

1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...

Office ファイルのオンライン プレビュー用の Vue サンプル コード

最近、電子アーカイブに取り組んでおり、バックエンドではファイルの Huawei Cloud OSS ...

auto.jsを使用して毎日の自動チェックイン機能を実現する

auto.js を使用して毎日のチェックインを自動化する感染症のせいで、毎日時間通りに家に帰らなけれ...

Linux または Windows 環境での pytorch のインストールと検証 (runtimeerror 問題の解決)

1. pytorch公式サイトから対応するインストールファイルをダウンロードします。 https:...

ダイナミックな波効果を実現するSVG+CSS3

ベクトル波 <svg viewBox="0 0 560 20" class...

MySQL 5.7 と Mac 上の MySql の詳細なインストール図をダウンロードする

1.ブラウザに次のアドレスを入力します参考: 2. 次のインターフェースに入ります。下の場所をクリッ...

InnoDB のアーキテクチャと機能の詳細な説明 (InnoDB ストレージ エンジンの読書メモの要約)

背景スレッド•マスタースレッドコア バックグラウンド スレッドは主に、バッファー プール データをデ...

JavaScript を使用してテーブル情報を追加および削除する

JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...

Windows 10 での MySQL 8.0.20 のインストールと設定方法のグラフィック チュートリアル

Win10システムにMySQL8.0.20をローカルにインストールし、個人的にテストして利用可能であ...

30分でReact Hooksを包括的に理解できます

目次概要1. 使用状態1.1 3つの概念に関する質問1.2 例1.3 注記2. リデューサーを使用す...