コンテンツにあわせて伸縮する背景 CSS

このQ&Aのポイント
  • コンテンツに合わせて伸縮する背景をCSSで実装する方法について
  • 上下にコンテンツを挟む形でラインが表示される方法について解説します
  • 背景をグラデーションにし、文字や画像との重なりや余白の問題を解決する方法をご紹介します
回答を見る
  • ベストアンサー

コンテンツにあわせて伸縮する背景 CSS

http://www.fisco.co.jp/index.html 上記のサイトのように、ヘッダーのリンクボタンの横の左右に伸びるラインと、 フッターの左右に伸びるラインのような背景にしたいと思っています。 その時上記サイトは背景が白ですが、私は上から下にかけてグラデーションにしたいと考えています。 最初縦長で上から下のグラデーション画像を用意し、X方向にリピートしてみたのですが、 コンテンツの長さによっては文字や画像と重なってしまったり、 またはものすごく余白があいてしまったりしています。 CSSは以下のように設定したのですがうまくいきません。 body { background:url(../img/bg.jpg) repeat-x center top; line-height:1.4; color:#333; font-family:Arial, sans-serif; font-size:0.7em; margin: 0; padding: 0; height:100%; } このような場合、コンテンツの長さがページごとに変わっても、 上下にコンテンツを挟む形でラインが表示される方法を教えてください。 説明がうまくできず申し訳ないのですが、よろしくお願いいたします。

  • onyan
  • お礼率93% (62/66)
  • HTML
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>お手数なのですが、「持ち帰り用」からファイルをダウンロードして >「bg,gif」をご確認いただけますか? >私は↑のサイトのように横のグラデーションではなく縦にしたいので、 >repeat-yではなくrepeat-xにしてみたのですができません。 なんか、いまいち掴めないんですが・・・ 縦っていうのは上が濃くて下に行くほど薄くなるっていう意味ですか? もしそうならば、このサンプルと同じ画像ではどれだけrepeatしても出来ません。 縦方向のグラデーションだけの画像を作って、bodyとかでrepeat-x [::::HEADER:::::]    [CONTENT] [::::FOOTER:::::] ↑Contentを中央に配置して、背景色白+左右に枠線つけてみたらどうでしょう

onyan
質問者

お礼

お礼が遅くなり申し訳ありません。 説明が足りなかったですね。。。 参考サイトの背景は内側から外側に薄くなるグラデーションで、横長の画像を縦にリピートしていたので、 私はその反対に上から下にかけて薄くなるグラデーションで、縦長の画像を横にリピートしてみたのです。 が、うまくいきませんでした。。。 tenderfeelさんのアドバイスどおり >縦方向のグラデーションだけの画像を作って、bodyとかでrepeat-x >[::::HEADER:::::] >   [CONTENT] >[::::FOOTER:::::] >↑Contentを中央に配置して、背景色白+左右に枠線つけてみたらどうでしょう こちらを試してみました。 上部に少々の隙間がなぜかできてしまい、今はその対処方法を探しているのですが、 グラデーションを背景にするところまで行くことができました。 本当にどうもありがとうございました。 あと少し、理想の背景ができるようにがんばります(^_^)

その他の回答 (2)

回答No.2

>教えていただいたようにHEADER・FOOTERとしてラインの設定はできたのですが、何か文字を入れないと表示してくれません。 >対処としてラインと同色の「・」を入れてようやく表示されたのですが、検索しても正式な記述方法が分かりません 具体的なソースとかがないんで当てずっぽうになるんですが・・・。 前に挙げた例は参考で貼られたサイトと同じように、ヘッダとフッタにロゴやメニューなんかが入るのを想定しましたが divタグはただの入れ物なので、中身が空でheight指定してないのなら 高さが0になるため背景指定しても表示はされません。 ただ横いっぱいに背景画像を繰り返し表示したいというのなら他にも方法があるのですが とりあえず背景画像と同じ高さに指定してみたらどうでしょう >BODYに設定してX方向にリピートとしたのですがそのままの画像が表示れてしまいます。 どういう画像なのかがわからないのですが、 XとY間違えてるだけ・・・とか無いですか?

onyan
質問者

お礼

なんと!できました!! #line {background:url(../img/top-foot-line.gif) repeat-x; margin: 0; padding: 0; color:#000000; } さきほどまでこのようなソースにしていたところ height: 10px; を加えることで表示されました。 ありがとうございます! グラデーション背景はこちらのサイトを参考に↓ http://css-happylife.com/log/css-template/000028.shtml 作ってみたものになります。 お手数なのですが、「持ち帰り用」からファイルをダウンロードして 「bg,gif」をご確認いただけますか? 私は↑のサイトのように横のグラデーションではなく縦にしたいので、 repeat-yではなくrepeat-xにしてみたのですができません。 >XとY間違えてるだけ・・・とか無いですか? yにしてみましたが、間違いではないようです。 よろしくお願いします。

回答No.1

このサイトはテーブルなんで、3列にしたテーブルの左右に横に伸びる背景を入れてるだけです。 XHTMLで同じ事をしたいなら単純に [::::HEADER:::::]    [CONTENT] [::::FOOTER:::::] みたいに3段にして HEADERとFOOTERにrepeat-xで横に伸ばす背景つければ同じように出来ると思います。 グラデーションはbodyみたいな大外の要素か contentの背景につければ良いのではないかと。

onyan
質問者

お礼

tenderfeelさん、ありがとうございます! できました! こんなに簡単なことなのに恥ずかしいです(>_<) ただまだちょっと分からないことがあります… 教えていただいたようにHEADER・FOOTERとしてラインの設定はできたのですが、何か文字を入れないと表示してくれません。 対処としてラインと同色の「・」を入れてようやく表示されたのですが、検索しても正式な記述方法が分かりません。 またグラデーション画像もラインを取ったものを用意し (幅20pxのグラデーションを左右に配置し、真ん中はコンテンツ幅の920pxにしてあります)、 BODYに設定してX方向にリピートとしたのですがそのままの画像が表示れてしまいます。 どうしてなんでしょうか??? またまた質問攻めですが、どうぞよろしくお願いします m(__)m

関連するQ&A

  • CSSで複数の背景画像を実装する方法

    いまコーディング中なのですが、背景画像がたくさんあるデザインでどうやるか悩んでいます。 添付画像を参照していただきたいのですが、白い背景の下にトップ(赤丸で囲ったオブジェクトが左右に二つあり、グラデーションだけが左右にエンドレスで伸びます。)に固定の背景、センター(青丸で囲った左右のオブジェクトがふたつ)に下方向ににリピートする背景があります。あああああ。。。。となっている部分はフッターで白い背景はフッター部分で切れます。 自分が試した方法です。 html要素に左右に伸びるグラデーションを指定、body要素に赤丸のオブジェクトを指定。これでトップの背景は実装できました。body要素に追加で青丸のオブジェクトも指定してみましたが、画面を上方向にリサイズすると赤丸のオブジェクトの下に重なってしまします。青丸のオブジェクトは白い背景の部分だけでリピートさせ、画面をリサイズしても赤丸オブジェクトに重ならないようにしたいのですが、この場合どのように実装するのが理想でしょうか。よろしくお願いします。 html { background: #F3F0E1 url(../img/share/bg_line.jpg) center top repeat-x; } body { background: url(../img/share/bg_t.jpg) center top no-repeat, url(../img/share/bg_m.jpg) center center repeat-y; } #wrapper { margin:0 auto; width: 960px; background-color:#FFFFFF; }

    • ベストアンサー
    • CSS
  • cssで左カラムと右コンテンツの長さをそろえる方法

    cssで左カラムと右コンテンツの長さをそろえる方法 今ホームページを作っているのですが、左カラムの背景と右コンテンツの長さがそろわず困っています。 左は短めなので右が長くなっても左は短いままなのです。 【background-repeat:repeat-y;】で左の背景を繰り返しています。 どなたか分かるかた教えてください。 下のようになっています。 #wrapper…左カラムと右コンテンツ部分 #side…左カラム #main_contents…右コンテンツ部分 body{ width:930px; float:left; margin:0px; padding:0px; font-size:12px; background-color:#CCCC99; color:#333333; font-family: "Verdana", "ヒラギノ角ゴ Pro W3", "MS ゴシック", "Osaka‐等幅"; line-height: 150%; height:100%; } #wrapper { margin:0px auto; background-color:#ffffcc; height:auto; min-height:100%; } #side { background-image:url(left_bg.gif); background-repeat:repeat-y; width:230px; float:left; margin:0; padding:0; } #main_contents{ width:685px; color:#333333; font-size:13px; font-family:"Verdana", "ヒラギノ角ゴ Pro W3", "MS ゴシック", "Osaka‐等幅"; line-height:170%; float:right; background-color:#ffffcc; padding-left:15px; margin:0; padding-bottom:200px; }

  • CSS2.1とCSS3の違いを教えて下さい。

    HTMLの勉強中の作家です。 色々悩んだ末にサイトをHTML5に移行作業中です。 テキストを読んでもCSS3の書式がイマイチよく分かりません。 (CSS2.1の)指定は背景色、文字色(1部文字色変更含む)、フォントの種類、背景色etcetc…と言った至ってシンプルな文字のみのサイトです。 あちこちのサイトを見ながら悪戦苦闘をしていますが、CSSのチェックをかけるとエラーが出ます。 CSS2.1を3にするためにはどこをどう変えれば良いのでしょうか? ちなみに @charset "UTF-8"; .ryoko { color : #407133;} .kazumi { color : #336070;} div,p { color : #222222;} p { font-family: Arial, Helvetica, sans-serif;} body { background-color:#e0ffe0;} a:link { color : #0000ff;} a:visited { color : #003333;} a:hover { color : #660000;} a:active { color:#660066;} p{ margin: 1px 0px 1em 0px; font-size:95%; line-height:103%;} div { color : #222222;} div { font-family: Arial, Helvetica, sans-serif;} div{ margin: 1px 0px 1em 0px; font-size:95%; line-height:103%;} .akeru{ line-height:1em; } ↑これです。テキストとCSS3について説明されているHPと各マチマチなもので戸惑っています。

    • ベストアンサー
    • HTML
  • bodyから左右に15pxずつ背景画像をのばしたい

    cssの基本設定ですが、 背景色をひき、さらにbodyから左右に15pxずつ背景画像をのばしたい という設定を試みていますがうまくいかずご教授いただけたらと思い書き込みさせていただきました。 背景色が #9999cc これを全面に表示し 背景画像を width 800pxで作り下にリピート そしてbodyが width 770pxの #ffffffの白色です。 そして cssで記述して表示してみたところ safaiではきちんと表示されるのですが、firefoxではbodyの幅までしか背景画像が表示されていません。 bodyから左右に15pxずつ背景画像をのばしたいのですが、どうやればよいでしょうか。 現在の状況ですが、 /* ここからcss ------------------------------------ */ *{ color: #333333; font-size: 12px; line-height: 20px; text-decoration: none; margin: 0; padding: 0; word-wrap:break-word; } html { height: 100%; margin: 0px; padding: 0px; background-color: #9999cc; background-image:url(../img/bg.jpg); background-position:center; background-repeat:repeat-y; } body { margin: 0px; padding:0px; color: #333; text-align:center; font-family:"メイリオ",Meiryo,"MS Pゴシック", Osaka, sans-serif; } 本当に困っております。 誰かわかる方がいらっしゃればよろしくおねがいいたします。

    • ベストアンサー
    • CSS
  • 英字のサイトを作っています。背景をグラデーションにしたくて、CSSで背

    英字のサイトを作っています。背景をグラデーションにしたくて、CSSで背景の設定をしました。そうしたら、英字のフォント(Trebuchet MSやArialやTahomaで試しました)を打ってプレビューすると、フォントが細くやや荒くなってしまいます。グラデーションのCSSを使わなければ、通常のフォントのままです。ホームページビルダー13を使っており、グラデーションのcssは下記のサイトを参考にして作りました。 http://journal.mycom.co.jp/news/2010/02/17/012/index.html なんとかCSSのグラデーションを使いたいと思っていますが、原因がわかりませんでしょうか?

  • css:背景の縦長グラデーション画像がブラウザの高さによって伸び縮み?

    http://www.cyberagent.co.jp/index.html このサイトのように、グラデーションのかかった背景画像を使用する場合についてお願いします。 例えばこのサイトだと、「画像がブラウザの高さに合わせて縦に伸びている」と…見えるのですが、実際はどうなっているのでしょうか? 自分で、グラデーション画像を作って background: url(back.jpg) repeat-x (もしくはno-repeat)のように指定しても、 元画像back.jpgの高さにしかならず、フッターあたりは空いてしまって白地になるのですが。。 (画像の高さが600pxで、ブラウザが800pxだったら、下に200px空いてしまうということ) 何か指定すべきプロパティなどあれば教えてください!

    • ベストアンサー
    • HTML
  • CSSでDIVで挟んでいるのに背景色が出ない?

    CSSと(X)HTMLでページを作っています。角丸なページにしたいため、 /* ---------- 角丸画像の上辺 ---------- */ #main_contents_header { width: 800px; height:20px; background:url(./top.png) no-repeat top; margin: 10px auto 0px; padding: 0; text-align: center; } /* ---------- 上辺と下辺の間のメイン部分 ---------- */ #main_contents { background:url(./bg.png); width: 800px; margin: 0 auto; padding: 0; text-align: center; } /* ---------- 角丸画像の下辺 ---------- */ #main_contents_bottom { width: 800px; height:20px; background:url(./bottom.png) no-repeat top; margin: 0 auto; padding: 0; text-align: center; } というCSSを作り、 HTMLは <div id="main_contents_top"></div> <div id="main_contents"> ここにいろいろなコンテンツを置いていく </div> <div id="main_contents_bottom"></div> という書き方にしているのですが、<div id="main_contents">の背景画像が正しく出ず、地の色が見えてしまうのです。試しに<div id="main_contents">へpadding-bottom:300pxというような指定を加えると、正しく背景画像が出ました。 <div id="main_contents"> ここにいろいろなコンテンツを置いていく </div> という書き方ではダメなのでしょうか・・・? 確認はFirefoxとSafariでやっています。

    • ベストアンサー
    • HTML
  • CSSで背景色を下まで表示させたい

    左がメニュー、右がメインコンテンツになるサイトを作っています。 左右のボックスの背景色を下まで伸ばしたいのですが、 いろいろなサイトを見て回って、その通りに指定しているはずなのですが、 うまく行きません。 #layoutの中に#sidebarと#mainを入れ子にしてあります。 #layoutの背景色(完成後は背景色はなしにする予定)は下まで表示されますが、 #sidebarと#mainの背景色が下まで表示されません。 また、ブラウザの縦幅をすごく短くしてスクロールした時に、 #layoutの背景色がその縦幅より下は表示されなくなってしまいます。 今まではテーブルで作っていて、CSSとXHTMLを使うのは初めてです。 以下にソースを置いておきますので、ご回答よろしくお願いします。 <?xml version="1.0" encoding="shift_jis"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> <head> <title>背景画像を下まで表示したい</title> <style type="text/css"> *{ margin:0;padding:0; } html{ height:100%; } body{ margin: 0px; padding: 0px; height:100%; background-color:#DDDDDD; text-align:center; font-size: 11px; line-height:18px; font-family: sans-serif; color: #000000; } /*レイアウト指定*/ #layout{ margin: 0px auto; width: 960px; height:100%; min-height:100%; text-align:left; background-color:#000000; } body > #layout { height: auto; } #main{ float:right; margin:0px; padding:50px 34px 0px 34px; width:640px; height:100%; min-height:100%; background-color:#FFFFFF; } #sidebar{ float:left; margin:0px; padding:40px 30px 0px 0px; width:218px; height:100%; min-height:100%; background-color:#999999; } /*クリア*/ .clear { clear:both; } .clear hr { display:none; } /*罫線指定*/ .borderA { border-bottom:solid 1px #888888; margin-top:37px; margin-bottom:10px;} </style> </head> <body> <div id="layout"> <div id="main"> メインコンテンツ<br />メインコンテンツ<br />メインコンテンツ<br />メインコンテンツ<br />メインコンテンツ<br />メインコンテンツ<br />メインコンテンツ<br /> <p class="borderA"></p> <p>Copyright(C) xxxxxxxxxxx. All Rights Reserved.</p> </div> <div id="sidebar"> メニュー<br />メニュー<br />メニュー<br />メニュー<br />メニュー<br />メニュー<br />メニュー<br /> </div> </div> <div class="clear"><hr /></div> </body> </html>

  • CSSでの影の付け方

    http://radiocaroline.jp/ 上記のサイトのようにコンテンツ表示領域と 背景領域の間のグラデーション部分はどのように 設定すればいいのでしょうか? 現在真ん中780px固定で左右を背景画像にしてます。 <style type="text/css"> <!-- body { background: #000000; margin: 0px; padding: 0px; text-align: center; color: #ffffff; background-color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 100%; background-image: url(images/bg.gif); background-repeat: repeat; } .oneColFixCtrHdr #container { width: 780px; background: #000000; margin: 0px auto; text-align: left; } .oneColFixCtrHdr #header { padding: 0px; background-color: #000000; } .oneColFixCtrHdr #header h1 { margin: 0px; padding: 0px 0px; } .oneColFixCtrHdr #mainContent { padding: 0px; background-color: #000000; } .oneColFixCtrHdr #footer { padding: 0px; background-color: #000000; } .oneColFixCtrHdr #footer p { margin: 0px; padding: 5px 0px; } #left { background-color:#000000; width:530px; float:left; } #right { background-color:#000000; width:250px; float:left; } .style2 { color: #FFFFFF; font-size: 80%; } .style1 {font-size: 60%; color: #CCCCCC; } .style6 {color: #CCCCCC} .style7 {font-size: 70%} --> </style>

  • 背景画像を二つ指定

    こんにちは。 全体の背景画像(斜めストライプの柄)と、 コンテンツ部分に背景画像(白で両サイドに線)を別々に指定したいのですが、 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

専門家に質問してみよう