理解:before擬似クラスとvertical-align:middleを組み合わせて垂直中心を実現する原理
前言
よく知られているように、「Cssはどのようにして要素を垂直に中央に配置しますか?」すでにありふれた問題であり、この問題には現在多くの解決策があり、これらの案にもそれぞれ適用されるシーンとメリットとデメリットがあり、大体以下のようになっています.
では、今日は有効だがあまり使われていないスキームの原理を理解します.これは、偽要素
:before
とvertical-align:middle
を組み合わせて要素を垂直に中央に配置し、まず具体的なコード実装を見てみましょう.
child
上記のコードの実行結果は次のとおりです.
コードはみんなよく知っていると信じていますが、あなたは本当にその原理を理解していますか?次に、垂直中心をどのように一歩一歩実現するかを見てみましょう.
ぶんせき
まず、親要素ベースラインの位置が変更可能であり、固定されていないことを覚えておくことが重要です.
次に、コードを簡素化し、重要な部分を取り除きます.
child
font-size:0
とvertical-align:middle
を注記した結果、次のようになります.図から明らかなように、
:before
の擬似要素(以下、擬似要素と略称する)にとって、vertical-align:middle
を加えないか、加えないかは同じであり、結果は垂直方向に常に親要素を占めている.しかし、.child
要素の場合は異なり、垂直方向の位置が変わったのはなぜですか.ここでの擬似要素の役割は、親要素baselineの位置を変更(または再定義)することです.MDNドキュメントでの
vertical-align:middle
の定義を振り返ってみましょう.middle:要素の中央を親要素のベースラインに親要素x-heightの半分を合わせる
では、私たちの例を比較してみましょう.
このように、擬似要素に相当する中点は、親要素のベースラインと整列すればよい.x-heightは0であるため、加算しなくても構わない.加えてCssの要素のデフォルトは左上揃えで、この制限に対して、つまり偽要素に
vertical-align:middle
を加えると、デフォルトでは親要素の範囲を超えて表示されません.この場合、偽要素の高さは親要素の高さの100%、中点も決定されます.次に偽元素は親元素に言います:私の垂直方向の中点はすでに確定して、変わることは不可能で、一生すべて変わることはできなくて、しかし私の中点はあなたのベースラインと位置合わせしたいので、あなたは自分で見てやりましょう
親エレメントは妥協し、それ自体のベースラインを偽エレメントの中点に水平に位置合わせされた位置に移動します.この親エレメントのベースラインの位置も決定され、その高さの半分に近いです.
最後にchild要素は独自の
vertical-align:middle
を追加し、middle:要素の中部と親要素のベースラインに親要素x-heightの半分を位置合わせするという定義に従う.child要素のfont-sizeは継承関係も0であるため、その中点も自然にすでに決定された親要素のベースラインに位置合わせされ、垂直中心を実現し、これで終了する.まとめ
実はこの垂直中心方式の原理には主に以下のいくつかの要点があります.
原理を理解すれば、私たちはハードバックコードを死記する必要はなく、どのように実現するかを忘れません.文の中に間違いがあれば、指摘を歓迎します.
原文住所:https://guoyunfeng.com/2019/1...