質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

971閲覧

position:absoluteで相対的に定位置を確保した

pegy

総合スコア243

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/08/25 05:58

例えば下記の様なコードで#login-wrapperをウィンドウのリサイズをしても、常に#headerの右端に#login-wrapperの右端が揃う様にcssを設定したいと考えております。

ただ、実際に下記のコードを実行して、ウィンドウをリサイズすると#headerとの関係とは切り離され、常に動いてしまうと思います。それがposition:absoluteというものだとも思います。

参考にteratailのトップページのユーザーログインのための要素#boxUserMenuをみるとabsoluteが設定されているにも関わらず、ウィンドウリサイズに対して、必ず#headerから相対的に一定の位置を保ってくれています。少し表現が正しくないかもしれないのですが、どんなウィンドウサイズでも、#headerからみて同じ位置で#boxUserMenuが表示されていると思います。

なぜ、同じabsoluteを設定しているのに、違いがわからず、どの様に実装すれば良いかわからず、アドバイスを頂ければ幸いです。

html

1<div id="wrapper"> 2 <div id="header">header</div> 3 <div id="login-wrapper">login-wrapper</div> 4</div>

css

1#wrapper{ 2 width:600px; 3} 4#header{ 5 background:gray; 6} 7#login-wrapper{ 8 width:100px; 9 height:100px; 10 background:pink; 11 position:absolute; 12 right:0; 13}

JSFiddle

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

position:absoluteはデフォルトでは、ページの左上が起点となりそこからの距離で配置されます。

直近の祖先要素に、position:relativeposition:fixed を指定してある要素があれば、その要素の左上を起点として配置されます。

ということで、親要素である#wrapperposition:relative を設定すれば、
#wrapperの左上 = #header の左上が起点になります。

css

1#wrapper{ 2 width:600px; 3 position: relative; 4}

投稿2021/08/25 12:43

hatena19

総合スコア33795

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2021/08/25 13:27

コメントありがとうございます。 1日悩んだことが解決することができました。hatena19様のteratailに深い感謝でございます。 重ねて御礼申し上げます。
pegy

2021/08/25 13:33

自身から例としてteratailのトップページについて触れたため、念のため直近の祖先要素(#boxUserMenu)のpositionを確認したのですが、特に設定がなかったため、違うものが影響して実装ができているのかと思います。developer toolで諸々cssをつけ外ししてみて違いを勉強してみようと思います。JSで制御している場合にはちょっと調べ方がわからないのでお手上げですが・・・
hatena19

2021/08/25 14:01

> 自身から例としてteratailのトップページについて触れたため どの部分のことかよく分かりませんが、ヘッダー部分のことなら、 .L-header__inner に position: relative; が設定されているので、それが起点になっていると思われます。
pegy

2021/08/25 14:08

失礼しました、直近というのは親要素だけではなく、それより上も含んで直近という意味なのですが。誤解をしておりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問