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

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

新規登録して質問してみよう
ただいま回答率
85.50%
レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

CSS

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

Q&A

解決済

1回答

1334閲覧

レスポンシブで背景画像を比率を保ったまま表示させたいです

takopo

総合スコア484

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

CSS

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

0グッド

0クリップ

投稿2019/02/19 06:05

編集2019/02/19 07:25

質問させてください。
下の図のような、背景画像が画面の真ん中辺りからウィンドウの右端まで伸びていて、画像の左側にはテキストを配置する形を、CSSで表現するにはどういった方法がありますでしょうか。

イメージ説明

現状では下のような半分透明な背景画像を作って、background-size: 100%で表示させているのですが、これだけのために透明部分があるような画像を作るのは手間ですし、モバイルサイズでは使えないので別の画像に切り替える必要があるため釈然としません。
イメージ説明

なので、下の何の変哲もない普通の写真を背景画像として使いたいです。
イメージ説明

サンプルイメージはこちら
コードは下記になります。

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <title>サンプル</title> 7 <link rel="stylesheet" href="style.css"> 8 </head> 9 <body> 10 11 <div class="bg"> 12 <div class="content"> 13 <p class="txt">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> 14 </div> 15 </div> 16 17 </body> 18</html> 19

css

1@media screen and (max-width: 767px) { 2 .bg { 3 padding-bottom: 55vw; 4 /* この写真だけ使いたい */ 5 background: url(bg.png) center bottom /100% no-repeat; 6 } 7} 8 9@media screen and (min-width: 768px) { 10 .bg { 11 /* 透明部分があるPC用画像(これを使いたくない) */ 12 background: url(bg2.png) center top /100% no-repeat; 13 } 14} 15 16@media screen and (min-width: 768px) { 17 .content { 18 width: 720px; 19 margin-right: auto; 20 margin-left: auto; 21 } 22} 23 24@media screen and (min-width: 992px) { 25 .content { 26 width: 940px; 27 } 28} 29 30@media screen and (min-width: 768px) { 31 .txt { 32 width: 48%; 33 } 34}

PC用の画像を使わずにこのような表現をするにはどうすれば良いかというのが質問内容になります。
ブラウザはchromeとfirefoxで確認しました。

もしどなたか良い方法をご存知の方がいらっしゃいましたら、ご教授いただけますと助かります。
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2019/02/19 06:08

念のため「レスポンシブWebデザイン」もタグに追加しておいてください。 また、この内容だけでは再現確認も調整も出来ませんので、実際に試されたコード、ブラウザの種類バージョンをご提示ください。
takopo

2019/02/19 07:10

ありがとうございます。 コードとブラウザ情報を追記させていただきました。
m.ts10806

2019/02/19 07:12

コードは外部サイト?ですかね。 原則、質問に追記してください。 質問との連動性が薄くなりますし、何かでその外部サイトにアクセスできなかったときにコードが参照できなくなります。
takopo

2019/02/19 07:20

ご返信ありがとうございます。 ソースを追記させていただきました。 よろしくお願いいたします。
m.ts10806

2019/02/19 07:41

確認です。 この背景画像をラッパー部分(全体を包括するもの)に設置されているのはなぜでしょうか? 767px以下のときに下に回りこみ、767px以上のときに横に回りこみなのであれば、そもそもテキストと背景画像のブロックを別個に用意したほうが良いように思いました。
takopo

2019/02/19 08:08

すみません、もしかしたら解釈が間違っているかもしれないのですが、「テキストと背景画像のブロックを別に用意」というのは <div class="content">   <p class="txt">テキスト</p>    <div class="bg"></div> </div> ということでしょうか。この場合コンテンツの中にbgが入るのでウィンドウいっぱいに表示されなくなると思います。また背景だけの空タグを作るのも構造上良くなさそうです。 背景画像をラッパー部分に入れるのはウィンドウサイズに合わせるためで、contents はコンテンツ幅の指定、txt はテキストエリアの指定をしています。
m.ts10806

2019/02/19 08:13

んーなるほど。了解です。
yoshinavi

2019/02/19 08:13

画像の上にテキストは乗らないのですか?<img>タグでも、良いのでしょうか?
takopo

2019/02/19 08:17

ありがとうございます。 画像の上にテキストは乗りません。また imgタグを使うとウィンドウサイズいっぱいにしたときに横スクロールが出てしまうので、背景画像の方が良いかなと思います。
guest

回答1

0

ベストアンサー

下記のようにしてはどうでしょうか?

css

1@media screen and (min-width: 768px) { 2 .bg { 3 background: url(bg.png) right top /50% no-repeat; 4 }

center→rightに /100% → /50%に

投稿2019/02/19 08:18

m.ts10806

総合スコア80765

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

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

takopo

2019/02/19 08:27

ご回答ありがとうございます! サイズを50%にすればよかったんですね。全然気づきませんでした。 これでモヤモヤしていたものが取れて本当に助かりました!
m.ts10806

2019/02/19 08:29

あくまで今の状態にあわけてざっくり確認しただけなので、もし今後コーティング進んでいくとこれだけでは対応しきれない可能性もあります。 その際はhtml構造自体見直した方がいいかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問