× Catalog [1]line-height [2]vertical-align [3]absolute [4]flex
前の言葉 水平方向のセンタリングと比較して、人々は垂直方向のセンタリングに少し困難を感じています。 -align が正しく使用できません。実際、垂直方向のセンタリングを実現するには、いくつかのアイデアが必要になります。この記事では、垂直方向のセンタリングに関する 4 つのアイデアを紹介します
アイデア 1: Line-height は、単一行テキストの垂直方向のセンタリングを実現します 一行テキストを垂直方向のセンタリングするには、高さと行が必要であるという格言があります。高さは同じ値に設定する必要がありますが、高さを設定する必要はありません。実際、テキスト自体は行の中央に表示されます。高さを設定せずに行の高さで高さをサポートする
<style>.test{ line-height: 50px; background-color: lightblue;} </style> ログイン後にコピー
<div class="test">测试文字</div> ログイン後にコピー
アイデア2:vertical-align:middleを設定して垂直方向のセンタリングを実現する 【1】親要素の表示をtableに設定する- cell
table-cell要素にvertical-align:middleを設定すると、そのすべての子要素が垂直方向の中央揃えになります。これはテーブル内のセルの垂直方向の中央揃えに似ています
[注] IE7 ブラウザのサポートが必要な場合は、
テーブル構造に変更できます [注] table-cell に設定された div は使用できませんフローティングまたは絶対配置は、要素にブロックレベルの要素特性を持たせるため、テーブルセル要素の垂直位置合わせ機能が失われます。フローティングや絶対配置が必要な場合は、外側に別のdivレイヤーを置く必要があります
<style>.parent{ display: table-cell; vertical-align: middle;}</style> ログイン後にコピー
<div class="parent" style="background-color: gray;height: 100px;"> <div class="child" style="background-color: lightblue;">我是有点长的有点长的有点长的有点长的测试文字</div> </div> ログイン後にコピー
【2】子要素が画像の場合、高さの代わりに親要素の行の高さを設定します、親要素の行の高さのフォントサイズを 0 に設定します
vertical-align:middle の説明は、要素の中点が親要素のベースラインに、文字 X の高さの 1/2 を加えたものに揃えられるということです。親要素。文字 X が em ボックス内で垂直方向の中央に配置されておらず、各フォント内の文字 X の高位置と低位置が一貫していないためです。したがって、フォントサイズが大きいほど、違いがより顕著になります。 font-sizeが0の場合、文字のフォントサイズを設定するのと同等です
新規要素の高さを親の高さに、幅を0に設定し、さらにverticalのinline-block要素を垂直方向中央に設定します-整列:中央。 2 つの要素間のスペースは解析されるため、親レベルで font-size:0 を設定し、構造要件が厳密でない場合は、子レベルで font-size を必要な値に設定する必要があります。 2つの要素を1行に配置する場合は、font-size:0を設定する必要はありません
<style>.parent{ line-height: 100px; font-size: 0;}.child{ vertical-align: middle;}</style> ログイン後にコピー
<div class="parent" style="background-color: lightgray;width:200px;"> <img class="child" src="http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/img1.gif" width="50%" alt="test"> </div> ログイン後にコピー
アイデア3: 絶対位置決めによる垂直方向のセンタリング
【1】translate() のディスプレイスメントを使用する関数
翻訳関数のパーセンテージは相対的です 独自の高さに基づいているため、top:50% と translationY(-50%) を組み合わせることでセンタリング効果を実現できます
[注意] IE9 ブラウザはサポートしていません
[注意] 】 子要素の高さが分かっていればtranslate()関数も利用可能 margin-top:負の高さの値に置き換える
<style>.parent{ height: 100px; font-size: 0;}.child{ display: inline-block; font-size: 20px; vertical-align: middle;}.childSbling{ display: inline-block; height: 100%; vertical-align: middle;}</style> ログイン後にコピー
<div class="parent" style="background-color: lightgray; width:200px;"> <div class="child" style="background-color: lightblue;">我是比较长的比较长的多行文字</div> <i class="childSbling"></i> </div> ログイン後にコピー
【2】子要素の高さが固定の場合絶対配置のボックス モデル属性と組み合わせることで、センタリング効果を実現できます
<style>.parent{ position:relative;}.child{ position: absolute; top: 50%; transform: translateY(-50%);}</style> ログイン後にコピー
<div class="parent" style="background-color: lightgray; height:100px;"> <div class="child" style="background-color: lightblue;">测试文字</div></div> ログイン後にコピー
水平方向の中央揃えでは、div のレイヤーが要素の周囲にラップされます要素には負の margin-left 属性または相対的な負の left 属性が設定され、水平方向のセンタリング効果が得られます。ただし、マージンは包含ブロックの幅に相対的なものであるため、margin-top:-50% は高さの -50% ではなく幅を取得するため、包含ブロックの高さである相対パーセンテージ値には現実的ではありません。 is auto の場合、chrome、safari、および IE8+ ブラウザは要素の上部のパーセント値の設定をサポートしていないため、実現不可能です
アイデア 4: フレキシブル ボックス モデル flex を使用して垂直方向のセンタリングを実現します
[注意】IE9ブラウザは
をサポートしていません
【1】フレックスコンテナに軸の横の配置を設定する align-items: center
<style>.parent{ position: relative;}.child{ position: absolute; top: 0; bottom: 0; margin: auto 0; height: 50px;}</style> ログイン後にコピー
<div class="parent" style="background-color: lightgray; height:100px;"> <div class="child" style="background-color: lightblue;">测试文字</div></div> ログイン後にコピー
【2】フレックスアイテムにマージンを設定する: auto 0
<style>.parent{ display: flex; align-items: center;}</style> ログイン後にコピー
❤️
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
2024-10-22 09:46:29
2024-10-13 13:53:41
2024-10-12 12:15:51
2024-10-11 22:47:31
2024-10-11 19:36:51
2024-10-11 15:50:41
2024-10-11 15:07:41
2024-10-11 14:21:21
2024-10-11 12:59:11
2024-10-11 12:17:31