HTMLにおける要素の水平・垂直方向の中央配置に関する考察
ページをデザインするとき、ログインウィンドウを中央に配置するなど、DIVを中央揃えにして、ページウィンドウに対して水平方向と垂直方向に配置したいことがよくあります。
これまでにも、さまざまな方法が検討されてきました。
HTMLです。
- <スパン < 本体 >
- <スパン <スパン < ディブ クラス = "maxbox" > <スパン
- <スパン <スパン < ディブ クラス = "minboxのalign-center"。 > </ ディブ >
- <スパン <スパン </ ディブ >
- <スパン <スパン </ 本体 >
- <スパン
レンダリング(以下の方法は同じ効果イメージです)。
<イグ
1つ目は CSS絶対位置指定
主に絶対位置指定で、あとはmarginで真ん中に調整する。
親要素です。
- .maxbox{。
- 位置 : 相対 ;
- 幅 : 500px ;
- <スパン 高さ : 500px ;
- マージン : 5px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
子要素です。
- .minbox{
- 幅 : 200px ;
- <スパン 高さ : 200px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
水平・垂直方向のセンターアライメント。
- .align- センター {
- 位置 : 絶対 ;
- 左 : 50%;
- トップ : 50%;
- マージンレフト : - 100px ; /*width/-2*/
- <スパン マージントップ : - 100px ; /*高さ/-2*/
- }
2つ目:CSS絶対位置指定+Javascript/JQuery
主に絶対位置指定を使用し、Javascript/JQueryで中間位置に調整する。この方法は、最初の方法と比較して、クラスの柔軟性を向上させます。
親要素です。
- .maxbox{。
- 位置 : 相対 ;
- 幅 : 500px ;
- <スパン 高さ : 500px ;
- マージン : 5px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
子要素です。
- .minbox{
- 幅 : 200px ;
- <スパン 高さ : 200px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
水平・垂直方向のセンターアライメント。
- .align- センター {
- 位置 : 絶対 ;
- 左 : 50%;
- トップ : 50%;
- }
JQueryです。
- $( 機能 (){
- $( ".align-center" ).css(
- {
- マージンレフトです。 : ($( ".align-center" ).width()/-2) となります。
- "margin-top"。 : ($( ".align-center" <スパン ).height()/-2)
- }
- );
- });
第3回:CSS3絶対位置決め+変位
CSS3のtransform: translateを使った絶対位置指定でも同じ効果が得られます。
親要素です。
- .maxbox{。
- 位置 : <スパン 相対 ;
- 幅 : 500px ;
- <スパン 高さ : 500px ;
- マージン : 5px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
子要素です。
- .minbox{
- 幅 : 200px ;
- <スパン 高さ : 200px ;
- ボックスシャドウ 1px <スパン 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
水平・垂直方向のセンターアライメント。
- .align- センター {
- 位置 : 絶対 ;
- トップ : 50%;
- 左 : 50%;
- -webkit-transform: translate(-50%, -50%)。
- -moz-transform: translate(-50%, -50%)。
- <スパン transform: translate(-50%, -50%)。 /* 左にシフトアップする*/
- }
タイプ4:Flexbox。[ストレッチレイアウトボックスモデル]
要素を水平・垂直にするのは、Flexbox モデルでは簡単すぎる。
ここはHTMLを変更する必要があるだろう。
- <スパン < ディブ クラス = "maxbox align-center"。 > <スパン
- <スパン <スパン < ディブ クラス = minbox" > </ ディブ >
- <スパン <スパン </ ディブ >
- <スパン
親要素です。
- .maxbox{。
- 位置 : 相対 ;
- 幅 : 500px ;
- <スパン 高さ : 500px ;
- マージン : 5px ;
- ボックスシャドウ 1px 1px 1px rgba(0, 0, 0.8), -. 1px - 1px 1px rgba(0, 0, 0, 0.8)です。
- }
子要素です。
- .minbox{
- width: 200px;
- height: 200px;
- box-shadow: 1px 1px rgba(0, 0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0, 0.8);
- }
水平・垂直方向のセンターアライメント。
- .align- センター {
- 表示 : フレックス
- <スパン 表示 : -webkit-flex; /*互換性の問題*/
- <スパン ジャスティファイ - コンテンツ : センター ;
- アラインアイテム。 中央 ;
- }
いくつかの方式を比較したものです。
最初のCSS絶対位置決めマージン調整は、非常に親和性が高いが、柔軟性に欠ける。縦横の中央揃えが必要なボックスがたくさんある場合、幅と高さが異なるので、それぞれ別の.align-centerを書く必要があります。
2つ目はスクリプト言語を使用するもので、親和性が高く、1つ目の欠点を補うことができます。幅や高さの変化による水平・垂直方向のセンタリングの効果に影響を与えません。
3つ目は、CSS3のいくつかの新しいプロパティを使用し、IE10、Chrome、Firefox、Operaに対応していますが、互換性が低く、幅、高さの変更による水平・垂直方向の中央揃え効果に影響を与えません。
Flexboxモデルを使用、Firefox、Opera、Chromeに対応、IEは全滅。また、幅や高さが変わっても水平・垂直方向の中央揃えに影響しません。
今回の記事は以上です。お役に立てれば幸いです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン