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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

1回答

291閲覧

LP制作にあたりレスポンシブ対応に関して

t.sho

総合スコア1

Sass

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2024/05/04 12:40

実現したいこと

LP制作にあたり、
・コンテンツトップ部分に背景画像を設定しているのですが、可変させるとレイアウトが崩れるため修正したい

発生している問題・分からないこと

・コンテンツトップ部分に背景画像を設定しているのですが、可変させるとレイアウトが崩れている

該当のソースコード

sass

1&-introduce { 2 position: relative; 3 width: 100vw; 4 margin: 0 auto; 5 padding-top: 49%; 6 background: url("img/mv_bg_pc.png"); 7 background-repeat: no-repeat; 8 background-position: center center; 9 background-size: cover; 10 @include mobile { 11 background: url("img/mv_bg_sp.png"); 12 padding-top: 121%; 13}

HTML

1<section class="p-content-introduce"> 2<div class="p-content-introduce__wrapper u-center"> 3 <div class="p-content-introduce__inner"> 4 <div class="p-content-introduce__left"> 5 <p class="p-content-introduce__text">個人事業主のための<br>お得な健康保険料削減サービス</p> 6 <picture> 7 <source media="(max-width: 750px)" srcset="img/mv_logo_sp.png"> 8 <img class="p-content-introduce__bgImg" src="img/mv_logo_pc.png" alt="セクション1の画像"> 9 </picture> 10 <div class="p-content-introduce__imgBox"> 11 <div class="p-content-introduce__imgBoxInner"> 12 <picture> 13 <source media="(max-width: 750px)" srcset="img/mv_icon_sp.png"> 14 <img class="p-content-introduce__logoImg" src="img/mv_icon_pc.png" alt="セクション1の画像"> 15 </picture> 16 <picture> 17 <source media="(max-width: 750px)" srcset="img/mv_icon_text_sp.png"> 18 <img class="p-content-introduce__logoImg" src="img/mv_icon_text_pc.png" alt="セクション1の画像"> 19 </picture> 20 </div> 21 </div> 22 </div> 23 <div class="p-content-introduce__right"> 24 <picture> 25 <source media="(max-width: 750px)" srcset="img/mv_img_sp.png"> 26 <img class="p-content-introduce__logoImg" src="img/mv_img_pc.png" alt="セクション1の画像"> 27 </picture> 28 </div> 29 </div> 30 <a href="#" class="p-content-introduce__link"> 31 <picture> 32 <source media="(max-width: 750px)" srcset="img/mv_XXXX_btn_sp.png"> 33 <img class="p-content-introduce__btn" src="img/mv_XXXX_btn_pc.png" alt="セクション1の画像"> 34 </picture> 35 </a> 36</div> 37</section>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

可変した際、背景が縮む際に画像の挙動がおかしい

補足

自分で試したことは以下になります。
・padding-topで画像の(高さ / 横幅) * 100を設定
・画像を、imgタグを用いてHTMLに直接設定

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

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

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

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

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

guest

回答1

0

ベストアンサー

Sassの一部を抜粋したのではコンパイルできないので動作確認できないの適切な回答はむずかしいです。
また、「レイアウトが崩れる」だけで、どのようなレイアウトを想定して、実際はどうなるかの説明がないと、アドバイスはむずかしいです。

とりあえず、

padding-topで画像の(高さ / 横幅) * 100を設定

ということからアスペクト比を固定したいだと推測しますが、だとしたら、CSSのaspect-ratioを使うといいでしょう。

aspect-ratio - CSS: カスケーディングスタイルシート | MDN

CSSのaspect-ratioプロパティで手軽にアスペクト比を設定する | Free Style

追記

アスペクト比を固定する方法は、aspect-ratioが実装される前は、
padding で余白をとり、その余白部分に内容を絶対配置(position:absolute)でレイアウトするという方法をとっていました。
しかし、この方法は内容を絶対配置するためにいろいろ複雑になります。

aspect-ratioを使えばpaddingと絶対配置を使う必要はなくシンプルにアスペクト比を固定できます。

とりあえず質問のHTMLコードの親要素(p-content-introduce)のアスペクト比を固定する場合のCSSコード例です。

css

1.p-content-introduce { 2 width: 100%; 3 margin: 0 auto; 4 aspect-ratio: 100 / 49; 5 background: url(); 6 background-repeat: no-repeat; 7 background-position: center center; 8 background-size: cover; 9} 10@media screen and (max-width: 768px) { 11 .p-content-introduce { 12 aspect-ratio: 100 / 121; 13 } 14}

CodePenサンプル

投稿2024/05/05 01:41

編集2024/05/05 09:20
hatena19

総合スコア34017

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

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

t.sho

2024/05/05 07:58

ご回答ありがとうございます。 ・どのようなレイアウトを想定しているのか backgroundで設定した画像内に文字列や画像を配置したい。 そしてその背景画像をpositionのrelativeに設定し、画像と文字列をpositionのabsoluteを使用し、その背景画像内に埋め込もうとしています。 ・実際はどうなるか 可変させた時に、背景画像のみが縮んでしまい、中の文字列や画像の要素群が縮まない 通常であれば背景画像が縮むにあたって、中の要素もそれに応じた大きさ等になるのが理想になります。 伝わりづらい部分あるかと思いますが、可能であればお手数をおかけいたしますが再度ご確認よろしくお願いいたします。 ※参考に共有いただいた、aspect-ratioではうまく実現できませんでした。 再度確認してみます。
hatena19

2024/05/05 08:47

まずは、回答者が実行可能なコードを提示してください。 Sassの抜粋では実行できません。 Sassではなくコンパイル後のCSSコードを提示した方が回答が付きやすいでしょう。
hatena19

2024/05/05 09:30 編集

> 可変させた時に、背景画像のみが縮んでしまい、中の文字列や画像の要素群が縮まない > 通常であれば背景画像が縮むにあたって、中の要素もそれに応じた大きさ等になるのが理想になります。 「中の文字列や画像の要素群」を親要素幅(画面幅)の拡縮に合わせて拡縮させたいのなら、 その要素の幅やフォントサイズをvw単位でしていすればいいでしょう。 vwは画面幅を基準(画面幅=100vw)にします。 親要素を記述にする場合は、コンテナクエリ単位のcqwを使います。
t.sho

2024/05/06 14:51

ご確認いただきありがとうございます。 承知いたしました、確認してみます。 ご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問