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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

Q&A

解決済

1回答

260閲覧

position: absoluteで指定した値を基準にほかの要素の配置を変更することはできますか?

yuyuyuyupanda

総合スコア3

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

0グッド

0クリップ

投稿2023/01/03 03:22

前提

画像の上に文字を配置したいのですが、ブラウザサイズを縮小した際に要素が重なってしまいます。
画面を縮小した際にもh1とpが重ならないようにしたいです。

実現したいこと

画像にposition: relativeを付与し、h1要素、p要素それぞれにposition: absoluteを付与しているたこのようになっていると思うのですが、この場合h1を基準にpにposition: absoluteを付与することはできるのでしょうか?

該当のソースコード

【html】 <div class="design"> <picture> <img src="/images/hoge.jpg" width="2000" height="400" alt="" > </picture> <h1 class="design__en">大要素</h1> <p class="c-mv-design__ja">小要素</p> </div> 【sass】 .design{ position: relative; & img{ width: 100%; position: relative; } &__en{ position: absolute; top: 37%; left: 25%; font-family: "Noto Sans CJK JP"; font-weight: bold; font-size: 80px; letter-spacing: 0.05em; line-height: 44px; color: #fff; } &__ja{ position: absolute; top: 60%; left: 25%; font-family: "Yu Gothic"; font-weight: bold; font-size: 35px; letter-spacing: 0.05em; line-height: 30px; color: #fff; } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

position: absoluteの基準は祖先要素にしかできませんので、兄弟要素であるh1を基準とすることはできません。
現状の方法でいくなら、h1とpを囲むブロック要素を追加して、それをposition: absoluteで位置決めするということになりますね。

html

1<div class="design"> 2 <picture> 3 <img src="/images/hoge.jpg" width="2000" height="400" alt=""> 4 </picture> 5 <div class="design_title"> 6 <h1 class="design_title_en">大要素</h1> 7 <p class="design_title_ja">小要素</p> 8 </div> 9</div>

SCSS

1.design { 2 position: relative; 3 & img { 4 width: 100%; 5 position: relative; 6 } 7 &_title { 8 position: absolute; 9 top: 37%; 10 left: 25%; 11 &_en { 12 font-family: "Noto Sans CJK JP"; 13 font-weight: bold; 14 font-size: 80px; 15 letter-spacing: 0.05em; 16 color: #fff; 17 margin: 0; 18 } 19 &_ja { 20 font-family: "Yu Gothic"; 21 font-weight: bold; 22 font-size: 35px; 23 letter-spacing: 0.05em; 24 color: #fff; 25 margin: 0; 26 } 27 } 28}

ちみなに line-heightをfont-sizeより小さくするのはお勧めしません。折り返したとき重なってしまいますので。おそらくh1とpの間隔を狭めたいと思ったのだと思いますが、marginで調整する方がいいと思います。h1とpはデフォルトでmarginを持ってますので、それを上書きするといいでしょう。


蛇足かもしれませんが、
背景画像の上にテキストを載せたいのなら、背景画像は、css background-image で設定して、テキストはflexで位置決めするのが自然だと思いますし、レスポンシブ対応なども楽になると思いますよ。

html

1<div class="design"> 2 <h1 class="design__en">大要素</h1> 3 <p class="design__ja">小要素</p> 4</div>

scss

1.design { 2 position: relative; 3 height: 400px; 4 background: url(/images/hoge.jpg) center/cover; 5 display: flex; 6 flex-direction: column; 7 justify-content: center; 8 padding-left: 25%; 9 & > * { 10 font-weight: bold; 11 letter-spacing: 0.05em; 12 color: #fff; 13 margin: 0; 14 } 15 &__en { 16 font-family: "Noto Sans CJK JP"; 17 font-size: 80px; 18 } 19 &__ja { 20 font-family: "Yu Gothic"; 21 font-size: 35px; 22 } 23}

投稿2023/01/03 05:49

編集2023/01/03 06:11
hatena19

総合スコア33699

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

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

yuyuyuyupanda

2023/01/03 09:40

わかりやすいご説明ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問