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

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

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

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

CSS

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

Q&A

解決済

1回答

253閲覧

画面幅を狭めた時、背景画像と一緒に上にのせている要素も縮小するようにしたい

mupo

総合スコア37

HTML5

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

CSS

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

0グッド

1クリップ

投稿2022/06/10 12:32

実現したいこと

画面幅を狭めたときに、背景画像の上にのせている白いボックスが一緒に縮小するようにしたいです。
背景画像は画面幅いっぱいに表示される+レスポンシブで設定しています。
https://jsfiddle.net/rupL3wfc/

発生している問題・エラーメッセージ

画面最大幅では背景(紅茶画像)の左のあたりに白いボックスが表示されますが、画面幅を縮小していくとこの白いボックスの位置がどんどんずれてしまいます。
背景画像との比率を保ったままうまく縮小する方法を教えてください。

該当のソースコード

HTML

1<div id="wrapper"> 2 3<div class="Box"> 4<h2>タイトル</h2> 5<p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> 6</div> 7 8</div>

css

1#wrapper { 2 position: relative; 3 width: 100%; 4 min-height: 100vh; 5 background: url("https://www.pakutaso.com/shared/img/thumb/ellycollection074_TP_V.jpg") center / cover; 6} 7 8.Box { 9 position: absolute; 10 top: 50%; 11 left: 29%; 12 transform: translateY(-50%) translateX(-29%); 13 -webkit-transform: translateY(-50%) translateX(-29%); 14 -ms-transform: translateY(-50%) translateX(-29%); 15 max-width: 392px; 16 max-height: 357px; 17 background: #fff; 18 padding: 50px; 19} 20 21.Box h2 { 22 margin: 0; 23 padding: 0; 24 font-size: 18px; 25} 26 27.Box p { 28 margin-top: 25px; 29 font-size: 12px; 30 line-height: 35px; 31}

試したこと

メディアクエリを使用して画面幅ごとに「left:29%」の数値を減らして調整してみましたが、メディアクエリの指定がたくさん増えてしまい、もっと他に適切なやり方があれば知りたいと思っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<div class="Box2">なかみはBoxと同じ</div>を追加した設定で、cssのみ記載します。

vw1920ぐらいのときは、例題とほぼ同じ配置です。
vw800ぐらいまでは使えるのでは、と思います

  • vw1600以下ぐらいから、箱の幅を画面幅依存にしてみた(背景がそれぐらいから縮まなくなるため)
  • transform の X を-50%にして、画面真ん中からLEFT分だけずれるようにしてみた。(X -50% だと、うんと横長でも位置合わせしやすい印象があるので)
  • 背景を透過してるのは、例題の箱との違いを見る用

もっとカッコイイ回答もあると思います。ご参考になれば幸いです。

  

css

1 2#wrapper { 3 position: relative; width: 100%; min-height: 100vh; 4 background: url("https://www.pakutaso.com/shared/img/thumb/ellycollection074_TP_V.jpg") center / cover; 5} 6 7/*共通する部分*/ 8.Box2, 9.Box{ 10 position: absolute; 11 top: 50%; 12 padding: 50px; 13 border: 1px solid #fff; 14 max-width: 492px;/*変更 ↓*/ 15 max-height: 457px;/*変更 ※↓paddingの分を含めたから*/ 16 box-sizing: border-box;/*新設*/ 17 18} 19.Box2 h2, 20.Box h2 { 21 margin: 0; 22 padding: 0; 23 font-size: 18px; 24} 25.Box2 p, 26.Box p { 27 margin-top: 25px; 28 font-size: 12px; 29 line-height: 35px; 30} 31 32/*以下、違う部分*/ 33.Box { 34 transform: translateY(-50%) translateX(-29%); 35 left: 29%; 36 background: #ffffff66; 37} 38 39.Box2{ 40 transform: translate(-50%,-50%);/*Xを-50%にすることで、画面真ん中からLEFTの分だけずれていく*/ 41 left: 34vw; 42 width: 30vw;/*幅を画面幅基準に*/ 43 background: #ffff0088; 44} 45/* 1600▽ */ @media only screen and (max-width: 1600px) { 46 .Box2{ 47 left: 29vw; 48 padding: 3vw;/*余白が大きいので削っていく*/ 49 line-height: 1em; 50 } 51}/*△*/ 52/* 1200▽ */ @media only screen and (max-width: 1200px) { 53 .Box2{ 54 width: 39vw; 55 left: 21vw; 56 } 57}/*△*/ 58 59

投稿2022/06/22 09:28

Nucle_cat

総合スコア38

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

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

mupo

2022/06/24 09:02

教えていただきありがとうございます!こちらの方法を使用させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問