• 締切済み

cssについて、レスポンシブな背景指定

背景を指定し表示させる上で、PCだと何の問題無く表示されるのですが スマホ等画面の小さいでスプレイで見た際、背景画像が等倍では見ず来為、 画面サイズに合わせて縮小させたいと考えています、。 現状では、画面の幅が小さくなり、背景画像が等倍のまま表示されてしまいます。 以下の参考のサイトの場合、スマホの画面に合せて背景が縮小されるようなので、方法自体はあるようなのですが、どの様にすれば良いのか解らず、何か良い方法はありませんでしょうか? http://jquery.shiftbrain.co.jp/ 記述としては以下の様にかいております。 <section id="section_photo" class="common_section"> <div class="content"> <h2><img src="images/tit_01.png" alt="" /></h2> </div> </section> .common_section { width: 100%; } #section_photo { background-attachment: fixed; background-image: url("../images/bg_section_photo.jpg"); background-position: center center; background-repeat: no-repeat; background-size: cover; } どうぞよろしくお願いいたします。

みんなの回答

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.3

No.1です。 何度も補足をさせてしまって申し訳ありません。 いろいろ考えてみたのですが、基本的なところで勘違いしていたようです。 結論としては、質問文にあるとおりの #section_photo { background-attachment: fixed; background-image: url("../images/bg_section_photo.jpg"); background-position: center center; background-repeat: no-repeat; background-size: cover; } で、大丈夫なはずです。 これで、うまく拡大縮小されないように見えるのは、用意した画像の縦横比と、指定した表示領域(background-attachment: fixed;を指定したということは、sectionではなく画面全体か?)の縦横比との関係によるようです。 background-size: cover; と指定することで、指定した表示領域を隙間なく埋めるために、画像の縦横を同じ比率で拡大縮小します。 このとき、画像の縦横比と、表示領域の縦横比が合っていない場合、たとえば、画像の方が横長の場合、縦を表示領域に合わせて拡大縮小し、それと同率で横も拡大縮小します。 そうすると、横がはみ出ますのでその部分はカットされて表示されます。 この状態で画面の幅だけを変化させると、表示領域の縦は変わらないので、幅がカットされた範囲を超えない限り、画像の拡大縮小率は変化しません。 カットされた範囲を超えてさらに幅を広くしようとすると、今度は、幅に合わせて画像を拡大し、縦がカットされます。 もしかしたら、まだ何か勘違いしているかもしれませんが、とりあえず回答しておきます。

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.2

No.1です。 補足の >「本書籍の一部を無料公開」や、そこから少し下の「Event」という辺りの背景です。 についてですが、背景の本やビル(?)のことであれば、PCもスマホも等倍のまま表示されているように思いますよ。 まぁ、等倍がどれくらいの大きさになるかは、ディスプレイのDPIに依存しますので、PCとスマホでは違ってくると思いますが…。 メディアクエリについては、 「CSS メディア・クエリーを使ってレスポンシブ Web サイトを作成する」 https://www.ibm.com/developerworks/jp/web/library/wa-cssqueries/ 「CSS3で使えるメディアクエリのタイプと特性の一覧 」 http://blog.asterlist.com/2013/01/1601.html が、分かりやすいと思います。 メディアクエリの詳細については、 メディア・クエリーに関する W3C 勧告の日本語訳 http://www.asahi-net.or.jp/~ax2s-kmtn/internet/css/REC-css3-mediaqueries-20120619.html が、詳しいと思います。

matsuch
質問者

補足

お返事ありがとうございます。 ウインドウサイズにより背景が縮小されてゆく事はPCからでも確認は出来るのですが、 ブラウザのウインドウの幅を320px位に小さくして、同時にウインドウの「高さ」も縮めるとそのサイズに沿って背景が小さくなってゆく事が確認が出来ると思います。 また、スマホipuohe5s(safari)と並べて比べてみると、明らかに本や建物の大きさが違うのです。 幅が511pxより小さくなるとガクンと切り替わって小さくなっていくようなのです。 これは、<link href="css/jquery_book_s.css" rel="stylesheet" media="(max-width:511px)"> なのかな..とは思うのですが。 記述としては、firebug上で background-size: cover; を取ると縮小が解除されたので恐らくこれが関係するようですがまだここまでしかわかりませんでした。 メディアクエリについてのURLありがとうございます。 こちらも見てもう少し学習しようと思います。

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.1

#section_photo { background-attachment: fixed; background-image: url("../images/bg_section_photo.jpg"); background-position: left top; background-repeat: no-repeat; background-size: 100%; } でどうでしょうか? ところで、リンク先のサイトで背景が縮小されるように見えるものというのは、最初の、 jQuery 最高の教科書 と書かれている画像のことでしょうか? この画像のことであれば、これは背景として指定されている画像ではなく、imgタグで表示されている画像です。 同じような方法でやるのであれば、たとえば、 <section id="section_photo" class="common_section"> <img src="images/bg_section_photo.jpg" alt="" id="backimage" /> <div class="content"> <h2><img src="images/tit_01.png" alt="" /></h2> </div> </section> .common_section { width: 100%; position: relative; } .common_section .content { position: relative; } #backimage { position: absolute; width: 100%; } みたいな感じになるでしょうか。 また、別の方法として、画面の幅によってCSSを選択する方法もあります。 さっきのリンク先のサイトでは、 <link href="css/jquery_book.css" rel="stylesheet"> <link href="css/jquery_book_m.css" rel="stylesheet" media="(max-width:1023px)"> <link href="css/jquery_book_s.css" rel="stylesheet" media="(max-width:511px)"> (一部抜粋) と、メディアタイプを指定することにより、画面の幅が、特定しない、1023px以下、511px以下で適用するCSSファイルを換えています。 これらのCSSファイルの中で、それぞれ幅の違う背景画像を指定することができます。 複数のCSSファイルを読み込んだ場合に、競合する指定があったときは、原則として後から読み込んだものが有効になります。

matsuch
質問者

補足

お返事ありがとうございます。 後で読み返すと何だかハチャメチャな文章ですみませんでした。。 リンク先のサイトで背景が縮小されるように見えるものというのは、 「本書籍の一部を無料公開」や、そこから少し下の「Event」という辺りの背景です。 まず、冒頭に書いて頂いた記述をまず試してみます。 まだまだ不勉強で聞くのも恥ずかしいのですが、 <link href="css/jquery_book_m.css" rel="stylesheet" media="(max-width:1023px)"> こういった方法がメディアクエリという物でしょうか?

関連するQ&A

  • CSSで背景を多重化する方法

    CSSでdivの中の背景を多重化したいと思いまして、 なんとかお知恵を拝借できればと思い投稿させていただきました。 やりたいことは、添付の画像のように、テキストの量によって背景の●がちゃんと下に動いて欲しいのです。 こんな感じでできるかなと思って試行錯誤していましたが、ぜんぜんできませんでした。 【html】 <div class="parent"> <div class="bg_upper"> <div class="bg_lower"> <div class="content"> テキスト・・・ </div> </div> </div> </div> 【CSS】 div.parent { position:relative; } div.bg_upper { position:absolute; top:0; left:0; background:url(../images/bg_tl.png) left top no-repeat; } div.bg_lower { position:absolute; bottom:0; right:0; background:url(../images/bg_br.png) right bottom no-repeat; } <div class="content">に対して、height:100pxのように明示的に高さを指定してやるとそれらしくは なったのですが、高さは可変なので使えませんでした。 なんとかヒントいただけましたら助かります。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • 複数指定の背景が表示されない

    困っているのでどなたかお力添えをお願いします。 htmlとbodyにそれぞれ別の背景画像を指定しているのですが、 IE6でのみ片方の背景が表示されません。 html { background: url(../images/bg.jpg) repeat center bottom; } body { background: url(../images/header-bg.jpg) repeat-x center top; } どうすれば表示されるようになるでしょうか? divを使う背景画像の複数指定が上手くいかなかったのでこのやり方をしています。

    • ベストアンサー
    • HTML
  • 背景画像を2枚使いうまく繰り返す方法

    htmlとcssでホームページを作っています。 背景画像を2枚使用しているんですが、どうしてもうまく表示されません。 1枚目はページ上部に。 2枚目はその下からすべて。 で、それぞれ横にリピート。 2枚目だけ縦にリピートして表示させようとしてます。 最初はbodyとdivで -------------------css-------------------------- body { background-image:url(""); background-repeat:repeat; } div.body { background-image:url(""); } ----------------html-------- <body> <div class="body"> 内容 </div> </body> --------------------------------------------- としています。 ですが、これだとdivのボックスができてしまい、横に無限に繰り返されないことになります。画面を縮小した時に切れてしまいます。 なので、htmlとbodyにそれぞれ背景をつけたんですが、 今度は両方の画像が表示されませんでした。 html { background-image:url(""); background-repeat:repeat-x; } body { background-image:url(""); } htmlのほうを消すと、bodyで指定した画像が縦横無限に繰り返されます。 htmlを消さずにbodyを無限に表示されるにはどうしたらいいですか?

    • ベストアンサー
    • HTML
  • 背景画像を二つ指定

    こんにちは。 全体の背景画像(斜めストライプの柄)と、 コンテンツ部分に背景画像(白で両サイドに線)を別々に指定したいのですが、 IEではうまく表示されましたがNetScape、Firefoxでは真ん中の画像が表示されません。。 URLはこちら http://ic.web6.jp/portfolio/rigtig.html 全体の背景はbodyに、 コンテンツにはdiv要素にrepeat-yで背景をそれぞれ指定しました。 どうすればIE以外でもうまく表示されるでしょうか? 背景を指定しているCSSはこちら body { width : 762px; margin : 0 auto; background-image : url("images/top_bg.gif"); line-height:1.4; font-size:10pt; } div#wrap{ width : 762px; background-image : url("images/body_bg2.gif"); background-repeat: repeat-y; }

    • ベストアンサー
    • HTML
  • 背景画像の指定方法

    少し調べたのですが、さっぱり原因が分からない為質問させていただきます。 外部CSSで背景画像を指定しているのですが、WinXP IE7で作製した所うまくいったのですが、別のマシン(WinXP IE6)で見ると表示の仕方が変わってきます。 参考ソース▼ 【外部CSS】----- .bg { width:300px; background-image:url(bg.png); background-repeat:no-repeat; background-attachment:fixed; background-position: bottom;} 【HTML】----- <div class="bg">長い本文</div> IE7だと、開いているウィンドウサイズに合わせて、見ている画面範囲の下部に背景画像が来るのですが、IE6の方だと、長い本文をスクロールしていった最後に、背景画像が表示される状態です。 分かりにくい説明かもしれませんが、アドバイスよろしくお願い致します。

  • css で背景のリピート設定についておしえてください。

    css で背景のリピート設定についておしえてください。 htmlもcssも初心者で初めてホームページの制作をしています。 タグをコピーします。 <body> <div id="header"> </div>    <div id="globalnavi">   <ul> <li id="menu"><a href="#">メニュー</a></li> <li id="menu"><a href="#">メニュー</a></li> <li id="menu"><a href="#">メニュー</a></li>    </ul>   </div>  </div> <div id="haikei_repeat"> <div id="content1"> <div class="inner_top"></div> <div class="inner_repeat"> ここにテキスト </div> <div class="inner_bottom"></div> </div> <div id="body_right"> <div class="inner_top2"></div> <div class="inner_repeat2">ここにもテキスト</div> <div class="inner_bottom2"></div> </div> </div> </body> bodyにも背景画像を使い、ヘッダ以下の コンテント部分の<div id=haikei_repeat> にy方向にリピート画像を指定しました。 <div id="haikei_repeat"> の中にある、 div classにもそれぞれ背景画像をしていし、topとbottomはリピートさせず、 真ん中のinner_repeatのみ背景画像をリピートしています。 このdivにテキストやimgを挿入し、後ろのhaikei_repeatもinnerrepeatの大きさに合わせて縦に リピートしてほしいのですが、うまくできません。 <div id="haikei_repeat">と <div id="inner_repeat">のボックスサイズは 横は指定し、縦のみauto にしています。 inner_repeatはきちんと内容の量にあわせてレピート表示できていますが、 背景リピートはできていません。 どのようにしたらいいでしょうか??? どなたかおねがいします。

    • ベストアンサー
    • HTML
  • 背景イメージの重ね表示

    こんにちは。 MTを使ってテンプレートを作っているのですが、サイドバー全体の背景の上に、別な背景を表示させようとしています。 例えば以下のようなかんじです。 <style type="text/css"> .bg {  background-position: left;  background-repeat: repeat-y;  background: url("./img/bg.gif"); } .fg {  padding-bottom: 100px;  background-position: bottom;  background-repeat: no-repeat;  background-image: url("./img/fg.gif"); } </style>       :       : <!-- ▼サイドバー▼ --> <div class="bg">   <div class="fg">       :       :   </div> </div> <!-- ▲サイドバー▲ --> IE だと全体の背景が前面にでてしまい、ホントは前面に表示されて欲しい別な背景が消されてしまい困っています。※Firefox などでは問題ない。 サイドバー全体の背景の上に別な背景を表示させたい場合には、どのようにすればいいのか教えください。 よろしくお願いします。

  • CSSでの2つの背景画像指定

    現在、Wordpressでサイトを運営しています。 既に背景画像を以下の感じで指定しています background:#f0f0f0 url(images/背景画像) repeat; そこで、この背景画像を残した状態で、新たに左側に20px幅程度の画像を 上から下までfixedで付け足したいと考えております。 ところが、現在の背景画像を残したままでどうしても画像の追加が出来ません。 たとえば、上記CSSタグに追加で background: url(images/追加画像) repeat-y fixed left top; を記述しますと、最初の画像が消えてしまいます。 両方の画像を有効にするには、どのような記述にすればよいのか アドバイスを宜しくお願い致します。

    • ベストアンサー
    • CSS
  • ネスケでの背景表示に困ってます!(CSS使用)

    はじめまして! 今手打ちでHPを作っているのですが、ネスケで動作確認をすると背景画像が テーブルのセルごとに表示されてしまって困ってます。 セルごとにリピートされている感じです。 背景画像の表示は、HTMLにCSSを組み込んで以下のようにしています。 table{ background-image : url(../images/***/***.gif); background-repeat : no-repeat; background-position : 50% 50%; } これだけだとIEでも背景が真っ白になってしまったので <table width="640" height="430" border=0 background="../images/***/***.gif"> も付け加えています。 この時点でなんだか怪しいのですが・・・ 初心者で、もうどうしたら良いか途方にくれて困っています。 説明がへたで本当に申し訳ないのですが、 どうか良きアドバイスをよろしくお願いします!

    • ベストアンサー
    • HTML
  • CSSで3分割した背景画像を配置したいけど隙間が出来てしまう?

    初めて質問させていただきます。 当方はCSS初心者です。 画像(グラデーションのある角丸四角枠)を3分割し、それを背景画像として配置したいのですが、WinIE6などで表示するとどうしても画像に隙間ができてしまうのです。 IE7、FireFoxでは無事に希望通りに表示されています。 【HTML】 <div id="wrapper"> <div class="top"></div> <div class="middle"></div> <div class="bottom"></div> </div> 【CSS】 #wrapper{ width:680px; height:auto; border:0 auto; padding:0; } .top{ width:650px; height:10px; background-image:url(img/01.gif); background-position:top center; background-repeat:no-repeat; margin:0 auto; padding:0; } .middle{ width:650px; background-image:url(img/02.gif); background-repeat:repeat-y; margin:0 auto; padding:0; } .bottom{ width:650px; height:13px; background-image:url(img/03.gif); background-repeat:no-repeat; background-position:bottom center; margin:0 auto; padding:0px; } といった感じで、ざくっとwrapperの中に背景画像をセンターで敷きたいのです。 .topと.middleの間には隙間は出来ないのですが、.middleと.bottomの間に数pxの隙間が出来てしまうのです。 制作環境はDreamweaver8、MAC/OSXですが、動作確認はWin/XPでも行っています。 何卒ご教示下さい。