[解決済み] 要素を水平方向と垂直方向の中央に配置する方法
質問
タブのコンテンツを縦方向にセンタリングしたいのですが、CSSスタイルに
display:inline-flex
の場合、水平方向のテキストアラインが消えます。
各タブのテキストアラインメントをxとyの両方にするにはどうしたらいいですか?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
解決方法は?
-
アプローチ1
transform
translateX
/translateY
:で 対応ブラウザ (ほとんどの場合) では
top: 50%
/left: 50%
と合わせてtranslateX(-50%) translateY(-50%)
を使用すると、動的に要素を垂直/水平方向にセンタリングすることができます。
.container {
position: absolute;
top: 50%;
left: 50%;
-moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
}
<div class="container">
<span>I'm vertically/horizontally centered!</span>
</div>
-
アプローチ2 - Flexbox方式。
で 対応ブラウザ を設定します。
display
を、対象となる要素のflex
を使用しalign-items: center
は垂直方向のセンタリングに使用しjustify-content: center
は水平方向のセンタリングに使用します。ブラウザの追加サポートのためにベンダープレフィックスを追加することを忘れないでください ( 例を見る ).
html, body, .container {
height: 100%;
}
.container {
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: center;
}
<div class="container">
<span>I'm vertically/horizontally centered!</span>
</div>
-
アプローチ3
table-cell
/vertical-align: middle
:場合によっては
html
/body
要素の高さを100%
.垂直方向のアライメントには、親要素の
width
/height
から100%
を追加しdisplay: table
. 次に、子要素のdisplay
からtable-cell
を追加しvertical-align: middle
.水平方向のセンタリングを行うには
text-align: center
でテキストをセンタリングし、他のinline
の子要素を使用します。あるいはmargin: 0 auto
であると仮定すると、その要素はblock
レベルになります。
html, body {
height: 100%;
}
.parent {
width: 100%;
height: 100%;
display: table;
text-align: center;
}
.parent > .child {
display: table-cell;
vertical-align: middle;
}
<section class="parent">
<div class="child">I'm vertically/horizontally centered!</div>
</section>
-
アプローチ4 - 絶対位置決め
50%
を上からズラして。この方法は、テキストの高さが既知であることを前提にしています。
18px
. 要素を絶対に配置するだけです。50%
親要素を基準として、上から順に表示します。負のmargin-top
の値は、その要素の既知の高さの半分であり、この場合は - となります。-9px
.
html, body, .container {
height: 100%;
}
.container {
position: relative;
text-align: center;
}
.container > p {
position: absolute;
top: 50%;
left: 0;
right: 0;
margin-top: -9px;
}
<div class="container">
<p>I'm vertically/horizontally centered!</p>
</div>
-
アプローチ5 - その
line-height
メソッド(最も柔軟性が低い - 推奨されません)。場合によっては、親要素の高さが固定されることがあります。垂直方向のセンタリングを行うには、親要素に
line-height
の値は、親要素の固定された高さと等しくなるように子要素に設定します。この解決策は場合によっては有効ですが、テキストが複数行ある場合はうまくいかないので注意が必要です。 このように .
.parent {
height: 200px;
width: 400px;
background: lightgray;
text-align: center;
}
.parent > .child {
line-height: 200px;
}
<div class="parent">
<span class="child">I'm vertically/horizontally centered!</span>
</div>
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] CSS Flexboxで、"justify-items "と "justify-self "プロパティはなぜないのですか?
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DIVを水平方向と垂直方向にセンタリングする [重複]。
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] CSSでテキストを垂直方向にセンタリングするには?[重複しています]
-
[解決済み] divの中のテキストを縦に揃えるにはどうしたらいいですか?
-
[解決済み] リンクを新しいタブまたはウィンドウで開く[重複]。
-
[解決済み] Bootstrap3による垂直方向の整列
-
[解決済み] HTMLのid属性とname属性の違い
-
[解決済み] Bootstrap 3 の sr-only とは何ですか?
-
[解決済み] 静的な HTML ページにファビコンを追加する
-
[解決済み] [Solved] How to vertically center a <span> inside a div? [duplicate]