1. ホーム
  2. Web制作
  3. HTML/Xhtml

HTMLにおける要素の水平・垂直方向の中央配置に関する考察

2022-02-05 22:43:56

ページをデザインするとき、ログインウィンドウを中央に配置するなど、DIVを中央揃えにして、ページウィンドウに対して水平方向と垂直方向に配置したいことがよくあります。

これまでにも、さまざまな方法が検討されてきました。

HTMLです。

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < 本体 >
  2. <スパン <スパン <

    ディブ クラス = "maxbox" > <スパン
  3. <スパン <スパン <

    ディブ クラス = "minboxのalign-center"。 > </ ディブ >
  4. <スパン <スパン </ ディブ >
  5. <スパン <スパン </ 本体 >
  6. <スパン

レンダリング(以下の方法は同じ効果イメージです)。

<イグ

1つ目は CSS絶対位置指定

主に絶対位置指定で、あとはmarginで真ん中に調整する。

親要素です。

CSSコード 内容をクリップボードにコピーする
  1. .maxbox{。  
  2. 位置 相対 ;   
  3. 500px ;   
  4. <スパン 高さ 500px ;   
  5. マージン 5px ;   
  6.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  7. }   

子要素です。

CSSコード 内容をクリップボードにコピーする
  1. .minbox{   
  2. 200px ;   
  3. <スパン 高さ 200px ;   
  4.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  5. }  

水平・垂直方向のセンターアライメント。

CSSコード 内容をクリップボードにコピーする
  1. .align- センター {   
  2. 位置 絶対 ;   
  3. : 50%;   
  4. トップ : 50%;   
  5. マージンレフト : - 100px ;    /*width/-2*/
  6. <スパン マージントップ : - 100px ;     /*高さ/-2*/
  7. }   

2つ目:CSS絶対位置指定+Javascript/JQuery

主に絶対位置指定を使用し、Javascript/JQueryで中間位置に調整する。この方法は、最初の方法と比較して、クラスの柔軟性を向上させます。

親要素です。

CSSコード 内容をクリップボードにコピーする
  1. .maxbox{。  
  2. 位置 相対 ;   
  3. 500px ;   
  4. <スパン 高さ 500px ;   
  5. マージン 5px ;   
  6.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  7. }   

子要素です。

CSSコード 内容をクリップボードにコピーする
  1. .minbox{   
  2. 200px ;   
  3. <スパン 高さ 200px ;   
  4.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  5. }  

水平・垂直方向のセンターアライメント。

CSSコード 内容をクリップボードにコピーする
  1. .align- センター {   
  2. 位置 絶対 ;   
  3. : 50%;   
  4. トップ : 50%;   
  5. }   

JQueryです。

JavaScriptコード 内容をクリップボードにコピーする
  1. $( 機能 (){   
  2.     $( ".align-center" ).css(   
  3.         {   
  4. マージンレフトです。 : ($( ".align-center" ).width()/-2) となります。  
  5. "margin-top"。 : ($( ".align-center" <スパン ).height()/-2)   
  6.         }   
  7.     );   
  8. });   

第3回:CSS3絶対位置決め+変位

CSS3のtransform: translateを使った絶対位置指定でも同じ効果が得られます。

親要素です。

CSSコード 内容をクリップボードにコピーする
  1. .maxbox{。  
  2. 位置 <スパン 相対 ;   
  3. 500px ;   
  4. <スパン 高さ 500px ;   
  5. マージン 5px ;   
  6.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  7. }   

子要素です。

CSSコード 内容をクリップボードにコピーする
  1. .minbox{   
  2. 200px ;   
  3. <スパン 高さ 200px ;   
  4.     ボックスシャドウ  1px <スパン 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  5. }   

水平・垂直方向のセンターアライメント。

CSSコード 内容をクリップボードにコピーする
  1. .align- センター {   
  2. 位置 絶対 ;   
  3. トップ : 50%;   
  4. : 50%;   
  5.     -webkit-transform: translate(-50%, -50%)。  
  6.        -moz-transform: translate(-50%, -50%)。  
  7. <スパン             transform: translate(-50%, -50%)。         /* 左にシフトアップする*/
  8. }   

タイプ4:Flexbox。[ストレッチレイアウトボックスモデル]

要素を水平・垂直にするのは、Flexbox モデルでは簡単すぎる。

ここはHTMLを変更する必要があるだろう。

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < ディブ クラス = "maxbox align-center"。 > <スパン
  2. <スパン <スパン <

    ディブ クラス = minbox" > </ ディブ >
  3. <スパン <スパン </ ディブ >
  4. <スパン

親要素です。

CSSコード 内容をクリップボードにコピーする
  1. .maxbox{。  
  2. 位置 相対 ;   
  3. 500px ;   
  4. <スパン 高さ 500px ;   
  5. マージン 5px ;   
  6.     ボックスシャドウ  1px 1px 1px  rgba(0, 0, 0.8), -. 1px  - 1px 1px  rgba(0, 0, 0, 0.8)です。  
  7. }   

子要素です。

C#コード 内容をクリップボードにコピーする
  1. .minbox{   
  2.     width: 200px;   
  3.     height: 200px;   
  4.     box-shadow: 1px 1px rgba(0, 0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0, 0.8);   
  5. }  

水平・垂直方向のセンターアライメント。

CSSコード 内容をクリップボードにコピーする
  1. .align- センター {   
  2. 表示 : フレックス   
  3. <スパン 表示 : -webkit-flex;        /*互換性の問題*/
  4. <スパン ジャスティファイ - コンテンツ センター ;   
  5.     アラインアイテム。  中央 ;    
  6. }   

いくつかの方式を比較したものです。

最初のCSS絶対位置決めマージン調整は、非常に親和性が高いが、柔軟性に欠ける。縦横の中央揃えが必要なボックスがたくさんある場合、幅と高さが異なるので、それぞれ別の.align-centerを書く必要があります。
2つ目はスクリプト言語を使用するもので、親和性が高く、1つ目の欠点を補うことができます。幅や高さの変化による水平・垂直方向のセンタリングの効果に影響を与えません。
3つ目は、CSS3のいくつかの新しいプロパティを使用し、IE10、Chrome、Firefox、Operaに対応していますが、互換性が低く、幅、高さの変更による水平・垂直方向の中央揃え効果に影響を与えません。
Flexboxモデルを使用、Firefox、Opera、Chromeに対応、IEは全滅。また、幅や高さが変わっても水平・垂直方向の中央揃えに影響しません。

今回の記事は以上です。お役に立てれば幸いです。