• ベストアンサー

CSSでの段組で、下辺を揃える方法

CSSで段組をしようと思うのですが、うまくいかないのでご教授下さい。 左と右にボックスを配置し、それぞれにテキストが入ります。 中のテキストは量がまちまちだったり、大きさが可変であったりするのですが、 文字の量・大きさに関わらず、左と右のボックスの下辺が同じになるように、 つまりボックスの高さは、常に両方が同じになるようにしたいのです。 テーブルタグでの段組であれば、 セルに文字を入れておけば自動的にこういう状態になりますが、 CSSのボックスでは、どちらかの量が少なければ、 少ない方の下辺が上がってしまい、高さが揃いません。 CSSの本を何冊か買って読んではみましたが、 こういう場合、heightを数値で指定してしまっている場合が多く、参考になりませんでした。 よろしくお願いいたします。

  • HTML
  • 回答数2
  • ありがとう数2

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

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

左右のボックスの高さを揃えるというのではなく、そのように見せるのであれば、左右のボックスを囲むボックスを作成し、左右の背景色または罫線を1枚の画像(高さ1pxの横長の画像)として作成し、背景画像とします。 例えば左側のボックスの幅が200px、右側が400pxとして、1px×600pxの画像の左から200px分を左側のボックスの背景色、残りを右側のボックスの背景色に塗りつぶし、GIF画像とし、左右のボックスを囲むボックスの背景画像として縦方向リピートで指定します。 <div style="width:600px;background:url(background.gif) 0 0 repeat-y;"> <div style="width:180px;padding:10px;float:left;"> <p>左のボックス</p></div> <div style="width:380px;padding:10px;float:right;"> <p>右のボックス</p></div> <div style="clear:all;"><img src="background.gif" style="width:600px;height:1px;border-none;"></div> </div> 左右のボックスを囲むボックス内の最後でフロート解除を忘れずに。 それぞれのボックスを罫線囲みにしたい場合は、背景画像にそれぞれの左右の罫線位置に罫線の幅分の罫線色の部分を作り、上下の罫線は左右のボックスを囲むボックスのborder-top、border-bottomで指定します。

NowThinking
質問者

お礼

ご回答、ありがとうございました。 うまくいきました! ここ最近ずっとこれで悩んでいたので、大変助かりました。 記述が、他に比べるとシンプルなのも嬉しい所です。 やっぱり、尋ねてみるもんですネ。 改めて、ありがとうございました。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

実質的なブロックの高さをコントロールするには現状では仕様・ブラウザの実装状況の問題があって、 CSSを使うよりテーブルに頼った方が現実的ですが、見た目をそれっぽくする方法ならばいくつかあるようです。 http://allabout.co.jp/internet/hpcreate/closeup/CU20050328A/

NowThinking
質問者

お礼

ご回答、ありがとうございました。 そのページは実は以前から知っていました(^_^; ページの通りにやってみたこともあったのですが、私の環境がおかしいのか? うまくいかなかったので、ここで質問してみようと思い立ちました。 でも、あのサイトはいろいろ参考になる所ですよね。

関連するQ&A

  • CSS ボックスの高さ指定

    例えば ▼html側 ------------------------------------------------------------- <div id="hako">あいうえおかきくけこさしすせそ</div> ------------------------------------------------------------- ▼css側 ------------------------------------------------------------- #hako{ width:500px; height:40px; } ------------------------------------------------------------- というソースで、あらかじめボックスの高さを指定しているとします。 この場合上記htmlの「あいうえお・・・」の部分の文量が多くなり テキストが2行3行となった場合、IEではその文量に応じてボックスの高さが伸びますが、 Firefoxではheight:40px;が不動のものになり、テキストがボックスの高さからあふれ出します。 これをFirefoxでもIEと同様にボックスの高さが可変するように出来ますか? css側でheight指定をしなければ、IE,Firefox共に文量に応じて可変するのですが、 デフォルトで表示領域をある程度確保しておきたいのです。

  • cssの段組レイアウトについての質問です

    かなり初歩的なことだと思うのですがこのことばかりがひっかかっています ブックオフの立ち読みでcssの本を読んでいたら 段組レイアウトというのを目にしました。 それはまず下敷きにマージン次にパディング、その上に内容を書く・・・というものでした。 一方ネットで調べてみたら、段組レイアウトのやり方のサイトをよんでみると 「ボックスを左と右にわけたり、上と下にわけたりする」だけで、マージン、パディングのことは書かれてなかったんですよね。(そもそも書くまでもないのかもしれませんが) よく3段組レイアウト2段組レイアウトと聞きますがそれは、立体的にとらえて領域をミルフィーユみたいに入れ子させて乗っけてくからなのでしょうか? それともボックスを平面的に並べることが段組レイアウトなのでしょうか? 理解力が足りずどうもよくわからなくて へんな質問ですいません。回答お願いします。

  • css 段組(3段 中央可変領域)

    いつもお世話になります。 cssで3段組(左エリア、中央エリア、右エリア)をする際、左と右のエリアは固定領域で真中だけ可変領域にしようと思っています。 全ての領域が指定なら、floatを使ってpx指定でうまくいくのですが、真中のエリアだけ可変ということで100%を指定すると、思うようにきちんと表示されません。 ググると、そのあたりはテーブルを使ったほうが確実みたいなことが書いてあったりはしたのですが、うまくcssで設定できないものでしょうか? 尚、上下にヘッダーとフッターがあるものとします。 ご存知の方、アドバイス等よろしくお願いします。

  • スタイルシートで三段組を作りたいのですが

    私はテキスト主体のサイトを持っているのですが、今まではテーブルを使ってレイアウトを構成してきました。 上下左右のマージンをパーセントやピクセルで指定してメインであるテキストがあるテーブルは可変というスタイルです。 数年前まではディスプレイの解像度がそれほど多様ではなかったので、これでも大丈夫だったのですが、最近の横長ディスプレイの普及のため、この方法では環境によっては横に長く表示されてしまうため、divタグを使っての段組に変えて行こうと思いました。 そこで段組のスタイルシートについて説明しているサイトなどを見てみたのですが、私がやりたいと思っているレイアウトが見つからなくて困っています。 ようは三段の段組を作りたいのですが、ボーダー壁紙を使うことが多いので左部分を空けたいのです。 A、B、Cの三段組で右に寄っているレイアウト、つまりBに720ピクセル、Cに80ピクセルの幅を持たせ、一番左のAの部分を可変にしたいのですが、これは可能ですか? 私の調べたところ、AとBを指定してCを可変にするレイアウトはあったのですが、上記のようなものは見当たりませんでした。 それともう一つ、Bの720ピクセルのボックスをページの中央にレイアウトする場合は、左右のボックスはどういう指定をすればいいのでしょうか? 上記のような段組の作り方、あるいは説明しているサイト等ありましたら、教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • CSS:floatを使っての段組で困っています

    図のような段組をしたいのですが、ソースはあっているでしょうか? サイトを作成しているとズレたりするので、根本的な段組が間違っているのか見て頂けると助かります。 ■HTML <body> <div id="container"> <div id="box-2">box-2</div> <div id="box-3">box-3</div> <div id="box-4">box-4</div> <div id="box-5">box-5</div> <div id="box-6">box-6</div> <div id="box-7">box-7</div> <div id="box-8">box-8</div> </div> </body> ■CSS body { margin: 0 auto 0 auto; padding: 0px; height:100%; } #container { width: 800px; } #box-2 { float: left; width: 800px; height: 30px; } #box-3 { float: left; width: 400px; height: 300px; } #box-4 { float: left; width: 400px; height: 300px; } #box-567 { clear:left; float: left; width: 800px; } #box-5 { float: left; width: 300px; height: 200px; } #box-6 { float: left; width: 300px; height: 200px; } #box-7 { float: left; width: 200px; height: 200px; } #box-8 { clear:left; width: 800px; }

    • ベストアンサー
    • 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>

  • CSSの段組で要素がかけてしまいます

    いつもお世話になります。 今CSSで段組をしています。 #content{ width:780px; height:auto; } #content{ float:left; width:440px; padding-left:20px; padding-right:20px; } #menu{ float:right; width:440px; padding-right:20px; } で左右のボックスを作り、 それぞれにテキストや画像などの子要素を入れていきます。 html <body> <div id="content"> <div id="main"> <div class="sub1"> </div> <div class="sub2"> </div> </div>  <div id="menu"> <div class="sub3"> </div> <div class="sub4"> </div>   <div class="sub5"> </div> <div class="sub6"> </div> </div> </div> </html> という具合です。子要素(sub)には高さ指定はしていません。 問題なのは、 firefoxでは子要素がきちんとおさまるのですが、 IE(6,7とも)右の3番目(sub5)の要素が欠落し、(飛ばされている感じ) safariでは右の4番目(sub6)の要素が右の1番上の要素にかぶって表示されます。 どうしたらいいでしょう?どなたかご教授ください。 質問に慣れていないので、もし補足が必要であればお願いします。

  • テキストボックスで段組したい

    wordで簡単な「地域たより」を発行しています。 ワードにまず「オブジェクト枠」を入れ、オートシェイブやテキストBOX を配置していますが、そのテキストBOX に通信記事を入れたいのですが、このテキストBOX では、段組できないのでしょうか? 出来ないなら、新聞のようなレイアウトの方法があれば、お教えください。 現在XP で 「Office2003」を使用しています。

  • CSS 段組で要素が表示されません

    いつもお世話になります。 今CSSで段組をしています。 #content{ width:910px; height:auto; } #content{ float:left; width:440px; padding-left:10px; padding-right:10px; } #menu{ float:right; width:440px; padding-right:10px; } で左右のボックスを作り、 それぞれににsubを作ってテキストや画像などの子要素を入れていきます。 htmlは <body> <div id="content"> <div id="main"> <div class="sub1"> </div> <div class="sub2"> </div> </div>  <div id="menu"> <div class="sub3"> </div> <div class="sub4"> </div>   <div class="sub5"> </div> <div class="sub6"> </div> </div> </div> </body> という具合です。子要素(sub)には高さ指定はしていません。 問題なのは、 firefoxでは子要素がきちんと表示されているのですが、 IE(6,7とも)右の2番目(sub4)の要素を表示せず、(飛ばされている感じ) safariでは右の4番目(sub6)の要素が右の1番上の要素にかぶって表示されます。 全体の高さとしては右側の段組の方が高さがあります。 実際にはそれぞれのsubにテーブルやテキスト、画像などが入っています。 何が原因でしょう?どなたかご教授ください。 質問に慣れていないので、もし補足が必要であればお願いします。

  • cssレイアウトで表を作成したいです。

    添付した画像の様な表組みをテーブルタグを使用せずに作成するのは可能なのでしょうか? もしくは表はテーブルタグを使用したほうが、ソースの量は少なくて済むのでしょうか 全体を囲うBoxAは"height:auto;"を指定してボックスBoxBのテキストの量によって可変する。BoxCのテキストは常にBoxBの最下行と揃える。 /*css*/ .BoxA{ width:490px; height:auto; margin:0px auto 10px auto; background-color:#999999; border:solid #999999 1px;} .BoxA .BoxB{ width:350px; height:auto; margin:0px; padding:5px; float:left; background-color:#fffbfb;} .BoxA .BoxC{ width:129px; height:auto; margin:0px; padding:0px; float:right; background-color:#fffbfb; } .clearfloat { clear:both;} <!--ソース--> <div class="BoxA"> <div class="BoxB"> <p>■■■■■■■■■■<br /> ■■■■■■■■■■<p/> </div> <div class="BoxC"> <p style="margin:auto 0px 0px;">■■■■■■■■■■</p> </div> <br class="clearfloat" /> </div>

    • ベストアンサー
    • HTML

専門家に質問してみよう