• ベストアンサー

CSSのボックスの背景色を交互に変えたい

CSSを使ったデザインで、ボックスを縦に並べたレイアウトをきっています。 (わかりやすい例で言うと、ポータルサイトによくあるお店一覧) 参考サイト:http://www.frontstyle.com/shopsearch/areaindex.php?mode=0&area=8 上記のサイトのように背景色を交互に変えていきたいのですが、 交互にCSSを変えていくと、削除したり、間に追加したりした時に不都合が生じます。 うまく、奇数はこの色、偶数はこの色みたいにできるやり方はあるのでしょうか? お願い致します。

  • peco33
  • お礼率79% (123/154)
  • HTML
  • 回答数6
  • ありがとう数6

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

  • ベストアンサー
  • Yama-tani
  • ベストアンサー率44% (13/29)
回答No.3

cssではないのですが、css3の普及をを待つ間、jQueryというJavaScriptのライブラリーを使う手もあります。cssのセレクターに表やリストの偶数行や奇数行を指定できるようになります。簡単な記述で、クロスブラウザでできますので、選択肢の1つにどうぞ。あっと、奇数・偶数は1からでなく0から始まるので普通の感覚とは逆となります。 少しのコードで実装可能な20のjQuery小技集 http://www.webcreatorbox.com/tech/jquery-tips20/ 5番目のサンプルです。trをliやdiv、pなどに変えることぐらいはわかりますよね? 「odd」と「even」で奇数行偶数行ですが、元の指定もあるので、かたっぽで済むかな。興味がわいたら、jQueryをひとかじりしてみてください。

peco33
質問者

お礼

ありがとうございます!! これは良さそうですね。 >>5番目のサンプルです。trをliやdiv、pなどに変えることぐらいはわかりますよね? trの中にpやdivを置くってことでしょうか? それとも別の事言ってます??すいません

その他の回答 (5)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.6

ですが、CSSだけでやろうとするとそれしかない。XSL(拡張スタイルシート)を使うと別だが・・

peco33
質問者

お礼

ありがとうございます。 CSSだけだと難しいんですね。;; No.3のおっしゃってたjQueryを使ったやり方が無難ですかね

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.5

ボックスだろうがなかろうが・・ <div class="ProductList"> <p>あ</p> <p>い</p> <p>う</p> <p>え</p> ・・・ </div> CSS div.ProductList p, div.ProductList p+p+p, div.ProductList p+p+p+p+p, div.ProductList p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p {background-color:skyblue;} div.ProductList p+p, div.ProductList p+p+p+p, div.ProductList p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p, div.ProductList p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p {background-color:pink;}

peco33
質問者

お礼

ありがとうございます。 このやり方だと、数がもっと多い場合であれば+pを増やしていかないといけないんですね? やはり、偶数はこれ、奇数はこれのほうがスマートな気がしますが、 どうなんでしょう?

  • Yama-tani
  • ベストアンサー率44% (13/29)
回答No.4

>trの中にpやdivを置くってことでしょうか? >それとも別の事言ってます??すいません すみません。忘れてください。 見本はtrに対応していますが、liなどでもできますよ。 だから、無理に表にしないでね、といいたかったのです。 かえって混乱させてしまいました。

peco33
質問者

お礼

ありがとうございます。 なんとなくわかりました。 つまり、親ボックスの中に子ボックスがある こういうカタチであれば、liでもpでdivでもいいということですね。 連続するボックスの奇数偶数ということですね 試してみたいと思います!!

回答No.2

現状ではプログラムを作って、奇数偶数を判断しながらclassなどを指定する必要があります。 参考サイトではPHPで作っていると思います。 CSS3に対応したブラウザであれば、以下の記述で可能です。 <style> tr{ background-color: red; } tr:nth-child(even) { background-color: blue; } </style> <table> <tbody> <tr><td>奇数</td></tr> <tr><td>偶数=even</td></tr> <tr><td>奇数</td></tr> <tr><td>偶数</td></tr> </tbody> </table> http://www.w3.org/TR/css3-selectors/#nth-child-pseudo

peco33
質問者

お礼

ありがとうございます!! 幅広い方への公開なので、と思いますが CSS3も選択肢に入れてみます。

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.1

例のサイトは、 <TR BGCOLOR="#F3EFE6">を交互に入れているだけですね。 仰る通りCSSでも同じで、各classで指定するのが一般的ですが、 項目途中にでも1項目だけ増やしたりすると、 上下のどちらかのclassや指定を全部交互に毎回変更する必要がありますね。 また、 JSやPHPでループすればなんとかなるかもしれないけど、 わざわざプログラムを作ったり増やすのも面倒でしょうか・・・ じゃあ、シンプルに、 各項目の各高さを height: ○px; で固定する条件下で、 親ボックスに各色違いの背景画像を設置してリピートさせれば簡単かも。 1段目は別の色、 2段目は透過.GIFで背景色をそのまま表示(別色を付けてもOK) ※ この画像の高さは項目 ○px ×2倍の高さ。幅は適当に。 ※ 子要素自体にはCSSで色を付けない事。 このCSSは、 #親ボックス{ background: #背景色 url(背景画像.gif);} こうすれば、 各子要素の項目は、色指定やclass分けする必要すらなくなり、 1項目でも3項目でも途中に追加しても自動で色違いになるはずですが。

peco33
質問者

お礼

ありがとうございます!! 申し訳ございません、条件に付け忘れてしまいましたが、 ボックスの高さは固定ではないのです。 内容によっては大きくなるボックスもあれば、入れる内容が違ってちっちゃいボックスもあります。 その辺を考慮するとPHPまでいきますか。。^^;

関連するQ&A

  • Tableの背景色を交互に変えたい

    http://muumuu-domain.com/?mode=price このサイトの表のように、奇数行と偶数行で背景色が 変わるようにしたいのですが、 どうすればよいでしょうか。 参考になるサイトだけでも構いませんので教えてください。

    • ベストアンサー
    • PHP
  • CSSのボックス

    ブランクがあり、位置から勉強をし直している者です。 CSSの3カラムでデザインしようと思って、タグをいじり始めましたが。 私の考えている3カラムになってくれません… 左に縦のボックス  真ん中に上、中、下に別れたボックス 右に縦のボックス という感じにしたいのですが、一番上に真ん中の上になる部分がきてしまいます。 一番上に横にボックス 真ん中に横に3つに別れたボックス 一番下に横にボックス になってしまいます。 説明下手で申し訳ありません… わかり難ければ補足いたしますので、ご教授お願いいたします。

    • ベストアンサー
    • HTML
  • CSSレイアウトで背景印刷ができない。

    CSSレイアウトで外注さんに制作していただいたのですが、画像のみのサイトな為、印刷したら白い紙しかプリントされません。 強制的に背景まで印刷するような、JavascriptもしくはCSSの記述はありませんでしょうか? 外注さんに「それならテーブルでくむしかない」といわれております。 誰か助けてください。。。

  • CSSを使用したページデザイン・背景色が変わらない

    現在CSSを多用したページのレイアウトを作成しています。 ある程度のレイアウトが出来てきたので背景色を付け加えてみようと思ったのですが 何故か背景色が変更できません。 中身としてはフッターの固定のために<BODY>内に親要素としてコンテナを作成して その中にメインコンテンツを入れています。 BODYに対して背景色の指定をしてもコンテナの外の色の変化もないく コンテナの背景色を指定しても同じ状態です。 CSSの知識も乏しいので原因がわからずお手上げ状態となってしまいました。 下記にhtmlとCSSのリンクを掲載しますので 原因が分かる方がいれば教えてください。 素人なのでソースは汚いですがそこはそっとして置いてください… http://beatprovider.info/oshiete/index.html http://beatprovider.info/oshiete/style.css

  • テーブルレイアウトしてしまっている後でCSSの背景を適用したいです。

    私HPをつくっているのですが、 テーブルレイアウトをしているのですが、 最近CSSを勉強しだしまして、 テーブルレイアウトのうしろの背景色を設定しようと思っております。テーブルはすべて中央揃えにしておりまして、 そのテーブル以外の部分に背景色を設定したいと思っております。 どのようにしたいかというと 参考HPをあげておきます。 http://www.neutrals.jp/works.html http://www.kekkon-navi.org/ http://www.plusmoney.jp/ この用な感じにメニューや本文の部分は白くて、 それ以外のところの背景が色をついている状態にしたいです。 外部CSSで全ページに適用していこうと思っているのですが、 CSSにはどのように記述したらよろしいでしょうか? お詳しい方よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSを使って、背景色をブラウザの縦100%につづかせたいです。

    こんにちは。おせわになります。 CSSを使って、左側に同じ背景色がブラウザの縦いっぱいにつづき、 右側に、たくさんの文字や画像をのせるレイアウトをしたいと思ってます。 しかし、どうやっても左の背景が縦100%になりません。 右のテキストの量が少なければ、問題ないのですが、多いとむりです。 グーグルなどでも調べましたが、どうしてもわからないです。 とてもこまってます。よろしくお願いします。 (ソース例の「たくさんの文字」というところには、多くの文字と写真が入ります。) --------------------------- CSS↓ html{ height:100%; } body{ height:100%; width:100%; } .b1 { background-color: #333333; height: 100%; width: 100px; float: left; } .b2 { background-color: #99CC33; height: 100%; width: 200px; float: left; } BODY内↓ <div class="b1">文字</div> <div class="b2"> たくさんの文字</div>

  • PHPで偶数と奇数を判断するには

    宜しくお願いします。 一覧表示等をする時に見やすいように一行ずつテーブルの色を変えたりすると思うのですが、これをPHPのfor文で自動的に交互に色を変えるようなプログラムを作ろうと思っております。for文で繰り返し処理場合、例えば、 for($n = 0; $n < 100; $n++) {  if($n = 偶数)  {  $bgcolor = "#ff0000";  }  elseif($n = 奇数)  {  $bgcolor = "#0000ff";  } } といった形で交互に色を変るには、偶数/奇数の判断が出来ないと無理だと思うのですが、何か良い方法は無いでしょうか?

    • ベストアンサー
    • PHP
  • liタグをCSSで指定して、レイアウトに用いています。背景色をつけたいのです。

    CSSでレイアウトして、サイトを作成しています。 <CSS部分> ul.box { zoom: 100%; list-style: none; padding: 0; margin: 0; } ul.box:after { height: 0; visibility: hidden; content: ""; display: block; clear: left; } ul.box li { float: left; width: 240px; background-color: #ffffff; border: solid 1px; padding: 1px; margin: 5px; <HTML部分> <ul class="box">     <li>テーマA</li>     <li>テーマB</li>     <li>Aの説明</li> <li>Bの説明</li> <li>テーマC</li> <li>テーマD</li> <li>Cの説明</li> <li>Dの説明</li> </ul> 以上のような感じです。HTML部分はこのULをさらに囲っている親要素があるのですが、それの幅があるので、横並びに2つ並んでいて、縦には4つboxが並んでいるような状態です。 ですので、ちぐはぐのような感じになっています。 問題はこのテーマとかかれているところだけに背景色をつけたいのですが、どうしてもできません。 http://htmltag.1.tool.ms/153/ こちらのサイトを見て <li bgcolor="#ffdddd">をやってみても色はつきません。 どうやればよいのでしょうか。 CSS自体変更した方がよいのでしょうか。

    • ベストアンサー
    • HTML
  • CSSでの枠線付きの丸角ボックスの作り方

    テーブルタグを使わずに CSS で枠線付きの丸角ボックスを作成するには、どのようにしたらいいでしょうか。 ・背景色 #FFFFFF ・前景色 #FFFFFF ・枠線色 #CCCCCC ・枠線の太さ 1px ・丸角の半径 5px ・ボックスの横幅は固定ではなくパーセントで指定したい。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • cssでボックス内にテーブルのような要素を・・・

    こんにちは。はじめまして。 CSS超初心者なのですが、バックグラウンド画像を使用して、例えば 外枠を影付き角丸ボックスを作り、さらにそのボックスの中に、 左側に写真、右側に小見出し&説明文の欄を作りたいのですが、 どうやればいいのか、困っています。(ボックスのサイズは幅500高さ 150くらいのと幅220高さ150くらいの2種類作りたいのです。 cssを1から作成する能力はないので、cssテンプレートサイトなどか ら、角丸ボックステンプレをダウンロードして使用させてもらって、そ のボックスの中に無理矢理(?)dl,dt,ddで左右横並びテーブルのよう なものを作ってみたのですが、ボックスの角丸枠とテーブルの間にもの すごい余白ができてしまったり、テキストが変に回り込んだりと、思う ようにレイアウトできません。 なにしろ、様々なcssタグの説明やhtmlタグの説明ホームページなどか ら、サンプルなどを引用させてもらっているので、当然なのかもしれま せんが(;_;)すみません・・・。 目標にしている数々のHPを閲覧していると、div要素ですべて配列して いるものもあって、、やはり自分のしているのは邪道なのかなぁと凹ん でいます。 外枠ボックスとテーブル(?)の間の余白が調整できないばかりでなく ボックス内のレイアウトがうまくできなくて困っています。 しかし、どれにしろcssの作成ができないので、途方に暮れています。。。 そんなこんなで、もう数週間パソコンにかじりついて、タグの勉強HPを 見ているんですが、なかなかわかりつらくて。 どうか助けてください。よろしくお願いします。 こんな感じのボックスが作りたい!というのは、あるんですが、他所様 のHPのURLを勝手に記載していいのやらで、わかりづらい文章ですみま せん。 (記載してもよろしければ、URL書かせていただきます)

    • ベストアンサー
    • CSS