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

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

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

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

CSS

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

Q&A

解決済

3回答

3348閲覧

background-size: contain;で背景画像の下側に余白がでないようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/08/15 23:47

横幅をせばめても、画像全体が表示されるようにcssで背景画像を
background-size: contain;
と設定しました。

しかし、背景画像に高さを指定しているので、
横幅を狭めるとどうしても、背景画像の下側に余白が表示されてしまいます。。。

ネットでしらべて
padding-topを設定したら解決するようなことが書かれていましたが、やってみても状態が変わらずでした。。。

もしご存知の方がいらっしゃれば教えていただけると助かります。

よろしくお願いします。

イメージ説明

html

1<div data-aos="fade" data-aos-duration=1000 class="fv"></div>

css

1fv { 2 background-image: url(img/pc-fv@2x.png); 3 background-size: contain; 4 background-repeat: no-repeat; 5 margin: 100px auto 0; 6 max-width: 1280px; 7 height: 620px; 8}

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

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

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

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

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

guest

回答3

0

ベストアンサー

背景画像の大きさに要素の大きさを合わせるのは難関ですが、できないことはないです。ある程度状況は限定されます。

条件は、背景画像のサイズが不変であること。具体的には縦横比が固定であれば良いです。
また、背景画像の上に何かしらのコンテンツを表示させる場合は、div.fvの中に別の要素を入れてそこに記載することを許容できることです。
以下に例を示します。仮に1200x600pxの背景画像を表示させることとします。
width:heightの比は2:1です。div.fvのpadding-topにwidthの1/2の値を割合でセットします。
width: 100% なら padinng-top: 50%, width: 80% なら padding-top: 40% です。
こうすることによりdiv.fv要素で背景画像の描画に必要な領域を確保しつつ、heightがwidthに連動して伸縮させられるようになります。
なお、.fvにheightは指定しないでください。 heightの代わりにpadding-topで高さを決めていますので。

この方法は、質問文に書いてある「padding-topを設定することで解決する」方法と同じであると思われます。もう一度情報の記事をよく読んで内容を理解してください。

html

1<div class="fv"> 2 <div class="fv-inner"> 3 <h1>ダミータイトル</h1> 4 </div> 5</div> 6<div class="concept">ここからConcept</div>

scss

1div.fv{ 2 color: #fff; 3 width: 100%; 4/* paddingでパーセンテージを指定すると縦も横もwidthからの相対数値になる。*/ 5/* padding-top(bottomでも良い)の大きさを背景画像の縦横比に合わせる */ 6 padding-top: 50%; 7/* コンテンツ要素にabsoluteを使う関係でfvはrelative */ 8 position: relative; 9/* 背景画像の措定。このデモでは1200x600の画像を使用。 */ 10 background-image: url(https://placehold.jp/3d4070/ffffff/1200x600.png?text=FirstView); 11 background-size: contain; 12 background-clip: border-box; 13} 14/* fvの上に文字やコンテンツを重ねる場合に使うinner要素*/ 15div.fv-inner{ 16/* fvにぴったり重ねるように配置する。left等の指定はborderからの距離になる。つまりpadding分を含む。 */ 17 position: absolute; 18 left: 0; 19 top: 0; 20 bottom: 0; 21 right: 0; 22}

codepenでのデモ

投稿2021/08/17 07:04

hope_mucci

総合スコア4447

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

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

退会済みユーザー

退会済みユーザー

2021/08/17 17:19

ご丁寧にコードまで教えていただきありがとうございます。 早速、やってみます!
guest

0

素朴な疑問ですが、どのように表示したいのでしょうか?

「画像全体を表示する」ことと「縦横比を守る」ことを両立させるには、「足りないときは背景をリピートさせる」あるいは「背景画像のない部分を許容する」のどちらかしか選択肢がありません。

投稿2021/08/16 00:41

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2021/08/16 06:55

回答いただきありがとうございます。 やりたいことは画像全体を表示しつつ、縦横比を守りたいです。 しかし、両立させることができないのですね。。。 わかりました。どちらかを選んで設定したいと思います。 ありがとうございます。
maisumakun

2021/08/16 06:59

> しかし、両立させることができないのですね。。。 画像と画面全体の縦横比が同じでない限り、両立は不可能です。
guest

0

画像をフィットさせたいなら、background-size: cover;を使用してはいかがでしょうか。

投稿2021/08/16 00:36

agumon

総合スコア271

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

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

退会済みユーザー

退会済みユーザー

2021/08/16 06:52

回答していただきありがとうございます。 background-size: cover; にすると、画面横幅を狭めたときに背景画像が途切れてしまうので、 background-size: contain; に設定しました。 でも高さを指定しているため、背景画像の下側に空白ができてしまいます。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問