2カラムのレイアウトをしたい。
-
0 名前: みんみ : 2005/09/23 16:28
- ありがちなレイアウトですが、ヘッダーの下を2カラムのレイアウトにして
左をメニューバー、右をコンテンツ表示のレイアウトにしたいと思っています。
続きのように指定してみたのですが、WinIE6だと表示できるのですが、
FireFoxだと“containts ”の部分が右に回り込んでくれません。
どこが間違っているのか、ご教示いただけないでしょうか。
あとできれば“side menu”は“containts ”の長さに合わせたいのです。
そこも間違っているみたいなので、教えて頂けると助かります。
よろしくお願いいたします。
-
1 名前: みんみ : 2005/09/23 16:28
- ソース 1)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>hogehoge</title>
<style type="text/css">
<!--
body {margin-top:0;text-align:center; background: url(img/bg.gif) repeat;}
table{width:678px; border:0;margin:auto;border-collapse:collapse;}
/* shadow at right and left */
td#c{ width:640px;margin:0;padding:0; background-color: #fff;}
/* main */
.main{width:640px;}
/* header */
#header{width:640px; height:70px; background: #1D358B url(img/header.jpg) no-repeat bottom; margin-bottom:5px;}
#header span{display:none;}
/* side menu */
.menu{float:left;}
.menu div {width:160px; background: url(img/bg_menu.gif) repeat;}
.menu h1 {width:160px; background-color:#48047B; font-family:'sans-serif','MS Pゴシック'; font-size:14px; font-weight:bold; color:#fff; padding:5px 5px 5px 8px;margin:0;}
.menu div.jp{width:160px; color:#1D354C; font-family:'sans-serif','MS UI Gothic'; font-size:12px; line-height:135%; text-align: justify; text-justify: distribute; padding:8px 6px 35px 8px;}
.menu a{display:block; width:160px; background-color:#AAAACC; font-family:'sans-serif','MS Pゴシック'; font-size:14px; font-weight:bold; color:#1D354C; padding:5px 5px 5px 8px;}
/* containts */
.cont {width:460px;float:left;margin-left:10px;}
.cont div {width:460px;}
.cont h1 {width:460px; background-color:#A5AED1; padding:8px;margin:0;
font-family:'sans-serif','MS Pゴシック'; font-size:15px; font-weight:bold; color:#1D358B;}
.cont div.text {color:#505050; font-family:'sans-serif','MS Pゴシック'; font-size:12px; line-height:135%; text-align: justify; text-justify: distribute; padding:15px 20px 35px 10px;}
-->
</style>
</head>
-
2 名前: みんみ : 2005/09/23 16:28
- ソース 2)
<body>
<table>
<tr>
<td id="c">
<div id="main">
<div id="header">
<span>header</span>
</div>
<!-- side menu ここから -->
<div class="menu">
<h1>メニューhogehoge1</h1>
<div class="jp">hogehogehogehogeについての説明です。</div>
<a href="hogehoge.html">メニューhogehoge2</a>
<div class="jp">hogehogehogehogeについての説明です。</div>
<a href="hogehoge.html">メニューhogehoge3</a>
<div class="jp">hogehogehogehogeについての説明です。</div>
</div>
<!-- side menu ここまで -->
<!-- containts ここから -->
<div class="cont">
<h1>hogehogeについて</h1>
<div class="text">hogehogehogehogehogehogehogehogehogehogehogehogeについての説明です。</div><img
src="img/hogehoge.gif" width="355" height="167" alt="">
</div>
</div>
</td>
</tr>
</table>
</body>
</html>
-
3 名前: Bill閣下 : 2005/09/23 16:28
- おおよそ、widthの計算に
padding,borderを含めているかどうかの違いとかその辺だと思います。
DOCTYPEスイッチとかレンダリングモードとか、なんか色々ややこしいです。
width:autoで済むところにはwidthを明示しないで、
具体的なwidthを指定している部分には
同時にpaddingとborderを指定しないでください。
.menu div, .menu h1, cont div, cont h1のwidth指定はたぶん不要です。
2つのボックスの高さをCSSで合わせるのは正攻法では不可能です。
ソースを見たところ、HTMLの理解がまだ浅いように見受けられました。
段組レイアウトの実現は無理せずにテーブルレイアウトで
やることをお勧めします。
-
4 名前: みんみ : 2005/09/23 16:28
- Bill閣下さま
レスありがとうございます。
色々やってみたのですが、
確実ですし、時間もかからないので
レイアウトはお勧めの通り
テーブルでやることにしました。
ありがとうございます。
-
5 名前: Bill閣下 : 2005/09/23 16:28
- 今朝書いたことが誤解を招きそうなので補足というか。
私はテーブルレイアウトを一般的に勧めているわけではない、
ということに注意してください。
でも段組デザインの実現にCSSを使って腐心するぐらいだったら
テーブルレイアウトでもして、
浮いた時間でコンテンツを作って公開する方が
いいんじゃないかな、と思います。
余裕がある人は以下の文書を参考にすればよいと思います。
ADP: floatレイアウトでつまづかないためのTips
http://adp.daa.jp/archives/000250.html
-
6 名前: Pid : 2005/09/23 16:28
- 私は最初 http://www.motchie.com/article/multicolumn.html
を意味も分からぬまま真似していました。
はっきり申し上げて,>>2 のソースはテーブルレイアウトと何ら変わりないので,>>3, >>5 で Bill 閣下さんが仰ったことはもっともなことだと思います。
ただ,一旦テーブルレイアウトに染まってしまうと,その他の手段への頭の切り替えができなくなってしまうので,もし近くに良いアドバイザが居るなら,なるべく早めに正しい HTML を習得して,CSS レイアウト脳になってしまった方が良いかもしれません。
※ Web ページを,閲覧するだけのものではなく,利用者が能動的に情報を取得していく媒体として考えると,レイアウトのためだけの table 要素は非常に邪魔になるんです…と自分の都合を述べてみる (^^;)。
-
7 名前: みんみ : 2005/09/23 16:28
- Bill閣下さん
何度もありがとうございます。
ご丁寧にすみません。
このコンテンツは全部で20ページあるのですがCSSでレイアウトすると
印刷用のページも作らなければならなくなり、倍以上の労力が必要になります。
ということにふと気づいて、今回そんなに時間をかけられないので、テーブルにしようと決めていました。
朝レスを見る前に、投稿を削除しようと思っていたのですが、レス付けていただいて居たので
残ってしまいました。
すみません。
>Pidさん
レスありがとうございます。
大元をテーブルにしたのには理由があるのですが>>2には今回の質問とは関係ないので省略しました。
関係あるトコだけ書けばよかったですね。
結果的にcssの理解がまだなので、しばらくは勉強しつつ表示が保障されることを第一に
やっていこうと思います。
※一応、チェッカーで満点出るくらいのソースなので美しいは思いませんが、中の下くらいのレベルだと思います。
テーブルのレイアウトだと、具体的に言うとどんなことが困るのでしょうか?
私は特に困ったことがないので、もしよければ教えてください。
-
8 名前: みんみ : 2005/09/23 16:28
- Bill閣下さん
いい機会なのでもし良かったらですが、もう少しお付き合いください。
>>3
>.menu div, .menu h1, cont div, cont h1のwidth指定はたぶん不要です。
.menu div, .menu h1はwidthを外したら、FireFoxではそれぞれのサイズが変わってしまいました。
どのように指定したら良いでしょうか?
-
9 名前: Bill閣下 : 2005/09/23 16:28
- 失礼。それは私のミスです。
.menuの方で幅を指定するとよいと思います。
そうすることで.menu div.jpと.menu aのwidth指定も不要になります。
私はテーブルレイアウトで困ることが時々あります。
私が使っているブラウザでは、ページ作成者のCSSを無効にすることが
簡単に行えるのですが、それによって段組が解除されることを期待しても
(3段組ぐらいになると、そのままでは読みにくいページが結構出てきます)
段組が解除されないのです。
それは当たり前で、表は崩れたら意味が変わってしまうから、
崩せないのです。
-
10 名前: Pid : 2005/09/23 16:28
- >>7
> 大元をテーブルにしたのには理由があるのですが
私が意図していたのはそこではなく,ぶっちゃけ <table>,<tr>,<td> を <div> に置き換えただけのような気がしたもので。
div 要素はそれ自体では意味を持ちませんから,div タグを剥ぎ取ったときでも,完全なマークアップであることが望ましいと私は思います(これはテーブルレイアウトの場合も同じです)。適切なマークアップ情報が無いと,たとえばあるページのある部分だけを抜き出してスクラップブック化するとか,見出しだけを抽出して機械的にページ要約を作ってみるとか,そういう応用がきかなくなってしまいます。
また,>>9 で Bill 閣下さんが仰るように,テーブルレイアウトだと段組を解除したくてもできないので,京ぽんユーザとしては痛いですね(ええ,以上すべてこちらの勝手な都合なのですが (^^;))。
>>2 だけで言えば,
<body>
<h1>hogehoge について</h1>
<p>hogehogehogehogehogehogehogehogehogehogehogehoge についての説明です。</p>
<p><img alt="" src="img/hogehoge.gif" width="355" height="167" ></p>
<hr title="">
<dl class="menu">
<dt class="now-here">メニュー hogehoge1</dt>
<dd>hogehogehogehoge についての説明です。</dd>
<dt>メニュー hogehoge2</dt>
<dd>hogehogehogehoge についての説明です。</dd>
<dt>メニュー hogehoge2</dt>
<dd>hogehogehogehoge についての説明です。</dd>
</dl>
</body>
でほぼ同じレイアウトが実現できますので,もし時間がおありならお試し下さい(まあ,ブラウザのバグ対策を考えると,div をもう少し増やさざるを得ないでしょうが)。
※すみません,ご質問の本筋とは関係のない余談でした m(_ _)m。
-
11 名前: Bill閣下 : 2005/09/23 16:28
- なんか、1と2のソースをコピーして保存してFirefox 1.0.6で開いてみたら
ちゃんと段組になっていましたよ。
でも、微妙に揃ってない感じだったので書き直してみたり。
http://www5e.biglobe.ne.jp/~bill/20050924.html
(まだ23日なのに20050924なのは気にしないでください。)
手抜きだしマーク付けに癖があるかもしれないので、
これを使え!というのではなく、参考にでもしてください。
もちろん使ってもいいですけど。