× 目次 [1]text-align [2]margin [3]absolute [4]flex
前の単語
水平方向の中央揃えはよくある問題です。道はたくさんあるようで、すべての道はローマに通じているようです。しかし、体系的にレビューした後、実際にはいくつかのアイデアを中心に展開します。この記事では、水平方向のセンタリングに関する 4 つのアイデアを紹介します
アイデア 1: 親要素に text-align:center を設定して、インライン要素の水平方向のセンタリングを実現します
子要素の表示を inline-block に設定します。子要素は Inline 要素になります
[注] IE7 ブラウザと互換性を持たせたい場合は、display:inline;zoom:1; を使用して inline-block の効果を実現できます
<style>.parent{text-align: center;} .child{display: inline-block;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;"> <div class="child" style="background-color: lightblue;">DEMO</div></div>
ログイン後にコピー
ログイン後にコピー
アイデア 2: 独自の要素で margin: 0 auto を設定して、ブロックレベル要素の水平方向の中央揃えを実現します
[1] サブ要素をテーブルとして表示し、サブ要素をブロックレベル要素にします。同時にテーブルも折り返され、コンテンツによって幅が拡張されます
[注] IE7 ブラウザと互換性を持たせるには、子の構造を
DEMO<に変更できます。 ;/table>
<style>.child{ display: table; margin: 0 auto;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;"> <div class="child" style="background-color: lightblue;">DEMO</div></div>
ログイン後にコピー
ログイン後にコピー
【2】子要素の幅が固定されている場合は、絶対配置ボックス モデル属性を使用できます。幅が設定されていない場合、子要素は中央揃え効果を実現します。伸びる
<style>.parent{ position: relative;}.child{ position: absolute; left: 0; right: 0; margin: 0 auto; width: 50px;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;height: 20px;"> <div class="child" style="background-color: lightblue;">DEMO</div> </div>
ログイン後にコピー
3 つのアイデア: 絶対位置の offset 属性を使用して水平方向のセンタリングを実現する
【 1】translate() 変位関数を使用する
translation 関数のパーセンテージは相対的です独自の幅になるので、left:50%とtranslateX(-50%)を組み合わせるとセンタリング効果が得られます
[注意] IE9ブラウザは
をサポートしていません
<style>.parent{ position: relative;}.child{ position: absolute; left: 50%; transform:translateX(-50%);}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;height: 20px;"> <div class="child" style="background-color: lightblue;">DEMO</div></div>
ログイン後にコピー
【2】relative付き
子要素が絶対に設定されているため、相対オフセット属性はそれ自体に対して相対的なものになります。そのため、相対を使用する場合は、
構造のレイヤーを追加して、その幅を子の幅と同じにする必要があります。 element
[注意] このメソッドは完全に互換性がありますが、HTML 構造を追加します
<style>.parent{ position: relative;}.childWrap{ position: absolute; left: 50%;}.child{ position: relative; left: -50%;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;height: 20px;"> <div class="childWrap"> <div class="child" style="background-color: lightblue;">DEMO</div> </div> </div>
ログイン後にコピー
ログイン後にコピー
【3】負のマージン付き
マージンのパーセンテージは包含ブロックに対して相対的であるため、
構造を追加する必要があります。幅のデフォルト値は自動なので、マイナスのマージンを設定すると幅も増加します。したがって、現時点では固定幅処理が必要です
[注意] 完全互換ですが、ページ構造と固定幅処理を増やす必要があるため、適用シナリオは限定されます
<style>.parent{ position: relative;}.childWrap{ position: absolute; left: 50%;}.child{ width:50px; margin-left:-50%;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;height: 20px;"> <div class="childWrap"> <div class="child" style="background-color: lightblue;">DEMO</div> </div> </div>
ログイン後にコピー
ログイン後にコピー
アイデア4: フレキシブルボックスモデルを使用する Flex は水平方向のセンタリングを実装します
【注意】IE9 ブラウザは
をサポートしていません
【1】スケーラブルコンテナに主軸の配置を設定する jusify-content:center
<style>.parent{ display: flex; justify-content: center;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;"> <div class="child" style="background-color: lightblue;">DEMO</div> </div>
ログイン後にコピー
ログイン後にコピー
【2】スケーラブルプロジェクトについて マージン設定:0 auto
<style>.parent{display: flex;}.child{margin: 0 auto;}</style>
ログイン後にコピー
<div class="parent" style="background-color: gray;"> <div class="child" style="background-color: lightblue;">DEMO</div> </div>
ログイン後にコピー
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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