[解決済み] 絶対位置の親 div の内側に div を垂直にセンタリングする方法
2022-04-19 21:36:34
質問
ピンクのコンテナの真ん中に青のコンテナを表示させたいのですが
vertical-align: middle;
は、そのような場合、仕事をしません。
<div style="display: block; position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;vertical-align: middle;background-color: pink;">
<div style="background-color: lightblue;">test</div>
</div>
</div>
結果
期待する。
どうすれば実現できるのか、提案してください。
解決方法は?
まず最初に
vertical-align
は、テーブルセルとインラインレベル要素にのみ適用されます。
垂直方向のアライメントを実現する方法はいくつかありますが、あなたのニーズに合うかどうかはわかりません。しかし、ここでは 2 メソッド をお気に入りから選んでいます。
1. 使用方法
transform
と
top
.valign {
position: relative;
top: 50%;
transform: translateY(-50%);
/* vendor prefixes omitted due to brevity */
}
<div style="position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;background-color: pink;">
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>
のパーセンテージ値が重要なポイントになります。
top
は相対的なものです。
height
を含むブロックのパーセント値です。
transform
は、ボックス自体のサイズ(バウンディングボックス)に対する相対値です。
もし、あなたが
フォントレンダリングの問題
(フォントがぼやける)、その修正方法は
perspective(1px)
を
transform
という宣言になるように。
transform: perspective(1px) translateY(-50%);
注目すべきは、CSS
transform
はIE9+でサポートされています
.
2. 使用方法
inline-block
(擬似)要素
このメソッドでは、2つの兄弟である
inline-block
で縦に並べられ、その真ん中が
vertical-align: middle
を宣言しています。
そのうちの1つは
height
の
100%
の親要素と、真ん中に配置したいもう一方の要素です。
.parent {
text-align: left;
position: absolute;
height: 56px;
background-color: pink;
white-space: nowrap;
font-size: 0; /* remove the gap between inline level elements */
}
.dummy-child { height: 100%; }
.valign {
font-size: 16px; /* re-set the font-size */
}
.dummy-child, .valign {
display: inline-block;
vertical-align: middle;
}
<div style="position: absolute; left: 50px; top: 50px;">
<div class="parent">
<div class="dummy-child"></div>
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>
関連
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] チェックボックスとそのラベルをクロスブラウザーで一貫して揃える方法
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] divの中のテキストを縦に揃えるにはどうしたらいいですか?
-
[解決済み] 絶対位置指定された要素をdivの中央に配置するにはどうしたらよいですか?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] 残りの幅を埋めるために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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ジャンボトロンのセンター出しは?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] クリアフィックスとは何ですか?
-
[解決済み] 特定のクラスや属性を持たない要素を選択するCSSセレクタは書けますか?
-
[解決済み] div 内の画像をレスポンシブな height で縦に並べる
-
[解決済み] margin:autoを使用してdivを垂直方向に整列させる