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

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

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

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

CSS

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

Q&A

解決済

1回答

2867閲覧

画像の背景にbackground-colorで帯を敷く方法

milk77

総合スコア1

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/07/08 23:23

編集2021/07/09 04:38

イメージ説明画像のようなイメージで画像の背景に画像より縦が小さい帯をbackground-colorで敷く方法を探しています。
背景に高さの違うbgを敷く記述で良い方法はありますか?イメージ説明
※img=画像 / bg=background-colorで指定
※サイズ 画像(幅1000px×縦500px) / box(幅1000px×縦500px) / bg帯(幅100%×幅200px)
・画像の横幅を指定したいです。
・レスポンシブで画像の縦横比が変わらない、かつ背景の帯も縦横比固定は可能ですか?
<div>のタグにimgの画像を入れたいです

仮で考えたのは下記です。こちらの記述では表示されませんでした。

<div class="test"> <img src="http://placehold.jp/150x150.png"> </div>

.test {
margin: 0 auto;
overflow: hidden;
height: 0;
padding-top: 56.25%;
background: no-repeat,
background-size: contain;
background-position: center;
border: 1px solid;
}

どなたかわかる方いらっしゃいませんか?

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

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

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

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

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

itagagaki

2021/07/09 00:22

bgも画像ですか? imgとbgのサイズは縦横いくつですか?
Lhankor_Mhy

2021/07/09 00:36

「画像の縦横比を固定しながら」とありますが、「<div>の縦横比を固定に」ともあります。 縦横比を固定するものは二つあるのですか?
milk77

2021/07/09 00:43

ご質問ありがとございます。下記回答になります。 >bgも画像ですか? bgはbackground-colorで設定したいです。 >imgとbgのサイズは縦横いくつですか? imgは縦横比のレスポンシブを想定していますので固定ではなく 仮に幅600/高さはautoで指定でしたいです。 >縦横比を固定するものは二つあるのですか? 画像の通り、boxの縦横比を固定し、bgを中央に敷く(imgの高さより低く、幅は100%) 説明が難しく申し訳ございません。 宜しくお願い致します。
Lhankor_Mhy

2021/07/09 00:46

とすると、タイトルの「画像の縦横比を固定しながら」は間違いということですか?
milk77

2021/07/09 00:50

ご質問ありがとございます。下記回答になります。 >「画像の縦横比を固定しながら」は間違いということですか? img縦横比は仮にboxというclassのタグに対して画像はレスポンシブで縦横比を固定 背景の幅はwidth:100%で画像の後ろの中央に帯のように敷くことは可能でしょうか。
Lhankor_Mhy

2021/07/09 00:56

もう回答してしまいましたが、つまり、boxと画像の両方で縦横比を固定したいということでしょうか? 「タグに対して画像はレスポンシブで縦横比を固定」というのがいまいち飲み込めないです。 (縦横比とは「タテに対してヨコの比」なので、タグに対しての縦横比となると……どういうことでしょうか?)
Lhankor_Mhy

2021/07/09 01:02

回答した後に気づきましたが、重複質問ではありませんか? https://teratail.com/questions/348489 同じような質問を連投したくなる気持ちもわかるのですが、しかし、一般に同じ質問を複数立てることは嫌われています。 いくつか理由をあげます。 ・他の質問で付けられた回答を知らずに同内容の回答を付けたり、他の質問ですでに解決したことを知らずに検討を続けたり、善意の回答者の労力が無駄になる。 ・元質問の回答者へ不信感を表明しているように見えるので、回答者に強い不快感を与える可能性がある。 以上のように誤ったコミュニケーションになってしまう可能性があります。 誤ったコミュニケーションは問題解決を阻害するだけではなく、不毛な論争などで時間や労力を無駄にし、質問者と回答者と共に良いことはありません。 ですので、同じ内容で新規の質問を建てることはできるだけ避け、どうしても新しい質問を建てる場合には、ほかのユーザーが納得できそうな理由を挙げていただくことによって、よりよいコミュニケーションが構築できるのではないかと考えています。 また、teratailのガイドラインにも同じ質問を複数建てることは推奨されていませんので、質問をされる前にまずヘルプを一読されることをお勧めします。 https://teratail.com/help#posted-otherservice 以上、よいQ&Aサイトを構築していくためにご協力をお願いします。
milk77

2021/07/09 01:13

ご回答ありがとうございました。 画像のイメージの通りなのですが、仮にboxというエリアがあるとして 中央に画像 ←レスポンシブで縦横比固定 その画像に背景に画像より縦が低いbg-colorで帯を敷く というシンプルな形なのですが・・・説明が難しくすみません。 >boxと画像の両方で縦横比を固定したいということでしょうか? boxは仮に幅1000×縦600だとして仮に画像が幅500×縦600だとします。 そして画像の背景の中央に幅100%×縦300のbackground-colorを敷くということになります。 ご回答いただいたタグを試しましたがうまく実装できず・・・ divとcssは別々にできませんでしょうか?
Lhankor_Mhy

2021/07/09 01:16

すみません、どうやら私はご質問が理解できていないようです。 ご質問を理解できたら回答に追記させていただきます。
milk77

2021/07/09 01:17 編集

>回答した後に気づきましたが、重複質問ではありませんか? https://teratail.com/questions/348489 こちらは先ほど使い方がわからず、内容を修正したかった際に出来なかったので新しい質問レスを誤って作ってしまいましたので、前回の質問は現在削除申請中の質問になります。
Lhankor_Mhy

2021/07/09 02:26

質問の編集を拝読。 これは、固定幅に変更した(レスポンシブをあきらめた)、という読みで合っていますか?
Lhankor_Mhy

2021/07/09 02:30 編集

また、当方の回答で希望に合わない部分を指摘していただけると、当方の理解が進むのではないかな、と思っております。 恐縮ですが、ご協力いただけますか?
Lhankor_Mhy

2021/07/09 03:09

もしかして、bg帯の高さが200pxではないことがご不満でしょうか?
milk77

2021/07/09 03:55

>bg帯の高さが200pxではないことがご不満でしょうか? bgの帯ですがサイズ指定は可能でしょうか? ウィンドウサイズを広げたところbg帯と画像の高さが同じになってしまいます。
Lhankor_Mhy

2021/07/09 04:07

> ウィンドウサイズを広げたところbg帯と画像の高さが同じになってしまいます 当方の回答の話ですよね? 当方の環境ではその現象は確認できませんでした。 milk77さんの環境では、回答で示したページでも「ウィンドウサイズを広げたところbg帯と画像の高さが同じになる」という現象は確認できる、ということでしょうか?
milk77

2021/07/09 04:14 編集

【横1000px × 縦800 の画像】 と 【幅1000px × 縦auto;】 のbodyで設定したため 教えていただいたcssのタグだけでは画像のサイズもつぶれてしまい表示されませんでした。 希望はhtmlに画像を指定してcssで背景のサイズを記述したいです。
Lhankor_Mhy

2021/07/09 04:14

質問の編集を拝読しました。 画像の横幅を指定し、かつ、縦横比を固定し、かつ、boxの縦横比を固定する、となると、つまりは 画像の横幅→画像の高さ=boxの高さ→boxの幅、というように算出するという理解で合っていますか? そうだとすると、画像の横幅が固定値なので、決め打ちで指定していけばいいと思うのですが、それでいいですか? (その場合はレスポンシブ対応できなくなります)
Lhankor_Mhy

2021/07/09 04:16

つまり、imgタグが必須条件、という理解で合っていますか? それならば、質問に書いた方がいいと思いますが。
milk77

2021/07/09 04:17

記述方法がわからないので、タグの想像がつきませんでした。 imgタグ必須条件 という意味でしたら、そちらになると思います!
milk77

2021/07/09 04:26

>横幅→画像の高さ=boxの高さ→boxの幅、というように算出するという理解で合っていますか? 画像と背景が1000pxで画像の横幅を800pxくらいにして背景のbg-colorを表示させたいです・・!
Lhankor_Mhy

2021/07/09 04:27

レスポンシブ対応はしなくていい、という理解で合っていますか? それとも、「画像の横幅を指定したい」についての当方の理解が合っていないですか? その場合、「指定」とはどういう意味ですか? 当方では width: 500px のような意味だと理解しています。
milk77

2021/07/09 04:29 編集

レスポンシブ対応したいです。 画像は背景と同じ大きさのため画像の横幅を指定したいという意味です。
Lhankor_Mhy

2021/07/09 04:38

「画像は背景と同じ大きさ」とはどういう意味だろう…… 背景とは帯のことだよな…… とりあえず、なんか作って「これだと何がダメなの?」って聞いた方が速いような気がしてきました。 そのうちに、なんかします。
milk77

2021/07/09 04:40

画像であげてみたのですが、いかがでしょうか? (こちらの案件は今日中希望なんです・・涙)
Lhankor_Mhy

2021/07/09 04:43

800pxに指定すると小さくならないので、レスポンシブ対応は無理なのでは…… 「レスポンシブ」について、横幅可変のような意味と読んでいましたが、なにか別の意味がこもっていますか?
milk77

2021/07/09 04:50

レスポンシブ対応というのは 幅1000pxのboxに対してmax-width:800pxで画像を表示できればと思っていました!
milk77

2021/07/09 04:50

無理なのですね!
Lhankor_Mhy

2021/07/09 05:07

1000*500 の画像を、縦横比固定で800pxの幅に変えると、高さが400pxになると思いますが、どうしますか? boxの下にすき間を開けていいですか?
milk77

2021/07/09 05:13

一旦、そちらでお願いしてもよろしいでしょうか? 大変助かります!
milk77

2021/07/09 05:28

ちなみにですがbgの帯は画像の真ん中にすることは無理ですか?><
Lhankor_Mhy

2021/07/09 05:33

そのぐらいはご自分でやるべきだと思います。 グラデーションを20%~60%のところにすればいいのでは。
milk77

2021/07/09 05:59

ありがとうございました!! 無事に完成いたしました。
guest

回答1

0

ベストアンサー

「bgはbackground-colorで設定したい」に反していますが、まあ一案としてご笑覧ください。

サンプル

CSS

1div { 2 overflow: hidden; 3 height: 0; 4 padding-top: 56.25%; 5 background: no-repeat url(http://placehold.jp/150x150.png?text=img), 6 linear-gradient(to bottom, 7 transparent 0% 20%, orange 20% 80%, transparent 80% 100%); 8 background-size: contain; 9 background-position: center; 10 border: 1px solid; 11}

なお、将来的にはaspect-ratioで書いた方がいいでしょう。
aspect-ratio - CSS: Cascading Style Sheets | MDN
iOS15でSafariも対応するようなので、数年後には普通に使えそうですね。


質問変更に合わせて追記

こういうことですか?

サンプル

投稿2021/07/09 00:50

編集2021/07/09 05:21
Lhankor_Mhy

総合スコア36960

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

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

milk77

2021/07/09 05:57

グラデの箇所を調整したところ真ん中あたりに帯が配置できました!!! 細かなところまでご相談&ご教授いただきとても助かりました・・・! はじめての投稿で戸惑ってしまって、投稿重複ミスなどお騒がせしました。 この度はありがとうございました!とても助かりました✨
Lhankor_Mhy

2021/07/09 06:06

ご解決されて何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問