
行いたいことは、とあるDIVなどに
background-size:contain;
を用いて画像を常に全体を表示させる設定を行っています。
<div id="contain_box">背景画像指定</div>
<p>次のコンテンツ</p>
しかしながら、この指定ですとレスポンシブの際、画面を拡大縮小するたびに、その下にある次のコンテンツとの隙間も大きくなったり小さくなったりしてしまいます。
画像全体を表示したいので、coverの指定はできません、試したところ画像の一部が切れてしまいます。
この隙間部分を、どの画面でも統一して決まった高さを持たせることはできないものでしょうか?
お詳しい方いらっしゃいましたらアドバイス頂けないでしょうか。
宜しくお願いいたします。

No.3ベストアンサー
- 回答日時:
#hoge { background: url("bg.jpg") 0 50% /contain no-repeat; overflow: hidden;
width: 100%; margin: auto;
}
#hoge:before{ content:""; display: block; padding-top: 40%;}
こんな感じで、
その画像の「%=高÷幅」を計算して割り出しましょう。
有難うございます!
#hoge:beforeを指定してblockにして、高さを%指定するという方法に驚きました、目からうろこでした。
:before このような使い方があるのですね…。
今回、1067px/1600px*100で66.68%の指定で試したところ綺麗に可変できました。
大変有難うございました。㎜
No.2
- 回答日時:
No1です
>min-height: 500px;
高さを固定指定にしているようなものなので、No1での推測通りになっていますね。
汎用的でなくても良いのなら、背景画像のプロポーションが横長のようなので…
仮に、縦横比が1:2と仮定するなら、事前に計算して指定してしまう方法が簡単です。
そのdivのサイズの決まり方がわかりませんが、vw単位で指定できるのなら、そのまま高さ方向も半分のvwを指定しておけば、画像のプロポーションに合わせてdivのサイズが変わるはずです。
%指定でないとできないようであれば、「×0.5」をブラウザに計算させるという方法でも、同様のことができるはずです。
https://developer.mozilla.org/ja/docs/Web/CSS/ca …
あるいは、画像を背景ではなくdivの子要素にしておくと、画像の場合は、横幅を指定することでプロポーショナルに拡大/縮小されるようになります。
こちらの方法であれば、画像のサイズ・形状に関係なく利用できるので汎用的とは言えますが、画像以外の要素を重ねて表示するためには position:absolute などで重ねる必要がでてきます。
有難うございます、画像を背景では無く子要素にするという考え方も場合によって使える方法だと思いました、大変参考になりました、有難うございます。
No.1
- 回答日時:
こんにちは
どうやってレイアウトいるのかまったく不明なのでなんともわかりませんが、背景の影響とは考えにくいので・・・
背景がno-repeatで、DIVが縦長なだけということはありませんか?
有難うございます。
情報不足ですみません!以下のような設定で再現できるかと思います。
このままだと何も変わらないように見えますが、実際に何でも良いので背景画像にbg.jpgとして画像を指定してみてください。
余白が空くというか、containで指定するので幅いっぱいに表示しようとして、そのせいで高さが可変してしまいます。
恐らく根本的な原因は、高さを決め打ちで500pxなどとしているのが問題だと思うのですが、何か高さ自体も連動して変化する定義方法がありましたらアドバイス願います。㎜
#hoge {
background: url("bg.jpg") no-repeat top center;
background-size: contain;
width: 100%;
min-height: 500px;
margin: auto;
}
<div id="hoge"></div>
<p>この上の余白が空いてしまう!!</p>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- Illustrator(イラストレーター) ワードに貼った画像のキャンバスと画像本体のサイズの調整 2 2022/05/19 18:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
要素の幅をいろんな写真の幅に...
-
iframe内をクリックさせない方...
-
【Webサイト】画像が小さく表示...
-
画像を固定する方法(背景以外)
-
ulでの段組の際の隙間
-
background-repeat CSS で切れ...
-
WEB上でディレクトリ内の画像を...
-
両端に背景画像を入れる
-
Borderの画像回り込み
-
画像の上にテキスト配置で、拡...
-
ホームページのWindowsに表示さ...
-
【至急お助け!】チェックボッ...
-
<hr>の縦バージョンはありますか?
-
Safariでのひどいレイアウト崩れ
-
HP作成 作成した画像を動画の上...
-
background-sizeでcontainする...
-
画像の大きさに合わせて文字の...
-
画像とその下にあるテキストの...
-
CSSのrepeatで切れ目が出る
-
コピーできない画像の仕組み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<hr>の縦バージョンはありますか?
-
【至急お助け!】チェックボッ...
-
【Webサイト】画像が小さく表示...
-
画像とその下にあるテキストの...
-
background-repeat CSS で切れ...
-
IMGタグで画像の繰り返し使用は…
-
画像の上にテキスト配置で、拡...
-
background-sizeの背景で最小値...
-
lightbox2で画像を天地左右中央...
-
iframe内をクリックさせない方...
-
background-sizeでcontainする...
-
要素の幅をいろんな写真の幅に...
-
WEB上でディレクトリ内の画像を...
-
同じ画像 複数回使用
-
画像で背景透明のテキストがに...
-
gif画像でたまに背景がグレーに...
-
ページの上下に白い横線が入る
-
ページごとに背景画像を変更し...
-
コーディング中、右側に謎の余...
-
ブラウザによって、画面表示の...
おすすめ情報