[解決済み] Bootstrapでコンテナを垂直方向に中央化する方法は?
質問
を垂直方向にセンタリングする方法を探しています。
container
の中にある
jumbotron
で、ページの真ん中に設定する。
は、その
.jumbotron
は、画面の縦横に合わせる必要があります。そのため
.container
divは幅が
1025px
で、ページの真ん中(縦方向中央)にあるはずです。
このページでは、ジャンボトロンを画面の高さと幅に合わせ、コンテナをジャンボトロンの縦方向の中心に配置したいと思います。どうすれば実現できますか?
.jumbotron {
height:100%;
width:100%;
}
.container {
width:1025px;
}
.jumbotron .container {
max-width: 100%;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="jumbotron">
<div class="container text-center">
<h1>The easiest and powerful way</h1>
<div class="row">
<div class="col-md-7">
<div class="top-bg"></div>
</div>
<div class="col-md-5 iPhone-features" style="margin-left:-25px;">
<ul class="top-features">
<li>
<span><i class="fa fa-random simple_bg top-features-bg"></i></span>
<p><strong>Redirect</strong><br>Visitors where they converts more.</p>
</li>
<li>
<span><i class="fa fa-cogs simple_bg top-features-bg"></i></span>
<p><strong>Track</strong><br>Views, Clicks and Conversions.</p>
</li>
<li>
<span><i class="fa fa-check simple_bg top-features-bg"></i></span>
<p><strong>Check</strong><br>Constantly the status of your links.</p>
</li>
<li>
<span><i class="fa fa-users simple_bg top-features-bg"></i></span>
<p><strong>Collaborate</strong><br>With Customers, Partners and Co-Workers.</p>
</li>
<a href="pricing-and-signup.html" class="btn-primary btn h2 lightBlue get-Started-btn">GET STARTED</a>
<h6 class="get-Started-sub-btn">FREE VERSION AVAILABLE!</h6>
</ul>
</div>
</div>
</div>
</div>
解決方法は?
フレキシブルボックスの方法
垂直方向のアライメント を使うことで、非常にシンプルになりました。 柔軟なボックスレイアウト . 現在では、この方式は ワイドレンジ Internet Explorer 8 & 9 を除くウェブブラウザで利用可能です。 ポリフィル または 異なるアプローチ IE8/9の場合。
以下では、その方法を、たったの 3行 のテキスト (古いフレックスボックスの構文に関係なく) .
注
を変更する代わりに、追加のクラスを使用したほうがよいでしょう。
.jumbotron
を使用して、垂直方向の整列を実現します。私なら
vertical-center
というクラス名で、例えば
<div class="jumbotron vertical-center"> <!--
^--- Added class -->
<div class="container">
...
</div>
</div>
.vertical-center {
min-height: 100%; /* Fallback for browsers do NOT support vh unit */
min-height: 100vh; /* These two lines are counted as one :-) */
display: flex;
align-items: center;
}
重要 ノート (デモで考慮した) :
-
A 割合 の値
height
またはmin-height
プロパティはheight
を指定する必要があります。height
を明示的に指定します。 -
Vendor prefixed / old flexbox syntax 投稿されたスニペットでは簡潔さのために省略されていますが、オンラインの例では存在しています。
-
Firefox 9 などの一部の古い Web ブラウザでは (私がテストした中では) フレックスコンテナ
.vertical-center
を指定する必要があります。width
プロパティのようにwidth: 100%
. -
また、前述のように一部のウェブブラウザでは、フレックスアイテムが
.container
の場合、水平方向の中央に表示されないことがあります。これは、左右のmargin
のauto
は、フレックスアイテムには何の影響も与えません。
そのためbox-pack / justify-content
.
列の垂直方向の配置の詳細については、以下のトピックを参照してください。
レガシーなウェブブラウザのための伝統的な方法
これは、この質問に回答した当時に書いた古い回答です。この方法は、これまでにも こちら で、Internet Explorer 8と9でも動作することになっています。簡単に説明します。
インラインフローでは、インラインレベル要素を縦に真ん中に揃えるには、次のようにします。
vertical-align: middle
宣言を行うことができます。からの仕様
W3C
:
中
ボックスの垂直方向の中点を、親ボックスのベースラインに親の x-heightの半分を加えた位置に揃えます。
親が
.vertical-center
要素に、明示的に
height
もし、子要素にまったく同じ
height
を使えば
のベースラインを移動させることができます。
をフルハイトの子の中点に合わせると、驚くことに、希望するインフローの子である
.container
- は、縦方向の中央に整列しています。
まとめ
とはいえ、フルハイトの要素を
.vertical-center
によって
::before
または
::after
擬似要素を変更し、さらにデフォルトの
display
のタイプで、もう一方の子である
.container
から
inline-block
.
次に
vertical-align: middle;
でインライン要素を縦に並べます。
お待たせしました。
<div class="jumbotron vertical-center">
<div class="container">
...
</div>
</div>
.vertical-center {
height:100%;
width:100%;
text-align: center; /* align the inline(-block) elements horizontally */
font: 0/0 a; /* remove the gap between inline(-block) elements */
}
.vertical-center:before { /* create a full-height inline block pseudo=element */
content: " ";
display: inline-block;
vertical-align: middle; /* vertical alignment of the inline element */
height: 100%;
}
.vertical-center > .container {
max-width: 100%;
display: inline-block;
vertical-align: middle; /* vertical alignment of the inline element */
/* reset the font property */
font: 16px/1 "Helvetica Neue", Helvetica, Arial, sans-serif;
}
ワーキングデモ .
また、極端に小さい画面での予期せぬ問題を防ぐために、擬似要素の高さをリセットして
auto
または
0
を変更するか、その
display
タイプから
none
というように、必要であれば
@media (max-width: 768px) {
.vertical-center:before {
height: auto;
/* Or */
display: none;
}
}
そしてもうひとつ。
がある場合
footer
/
header
セクションをコンテナの周囲に配置する場合は、その要素を適切に配置することをお勧めします。
(
relative
,
absolute
は、あなた次第です)。
を追加し、さらに高い
z-index
の値(保証のため)で、常に上位をキープします。
関連
-
[解決済み】ローカルの実行ファイルへのハイパーリンクを作成する方法は?
-
[解決済み] Add a scrollbar to a <textarea> [duplicate]
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] divの中のテキストを縦に揃えるにはどうしたらいいですか?
-
[解決済み] Twitter Bootstrap 3を使用して列を中央に配置する
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み】CSSを使用して、すべてのブラウザでdiv要素を垂直方向に中央に配置するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Telegramマークダウンの構文。太字 *と* イタリック?(2018年9月)
-
[解決済み] HTMLの#記号の文字実体は?
-
[解決済み] 文字列が部分文字列で終わっているかどうかをXPathでテストする?
-
[解決済み] Bootstrapのカラム内で画像を中央に配置する方法 [重複]について
-
[解決済み] 順序なしリストが div 内で左いっぱいに整列されない
-
[解決済み] フッターの内容が重なっているのを修正するには?
-
[解決済み] HTMLボタンのテキストを固定幅で折り返すには?
-
[解決済み] Font Awesome アイコンをプレースホルダーで使用する
-
[解決済み] 画像をインラインで表示する方法
-
[解決済み] フロートされた子 div の高さを親の高さに拡張するにはどうすればよいですか?