プロが教えるわが家の防犯対策術!

初めまして。お世話になります。

現在、ホームページを作成していますが、
分からない事がありますので、質問させて頂きました。

ホームページビルダーで、表(tableタグ)を使ったレイアウトを作成中です。

表の幅(width)と高さ(height)を共に100%で指定し、
表の中をセル(td)で細かく仕切り、その中に画像やテキストを配置し、
レイアウトしたいと思っています。

表のサンプルソースはこんな感じです。細かくてすみません…。

<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<TR>
<TD height="20" colspan="5"></TD>
</TR>
<TR>
<TD height="1" bgcolor="#cccccc" colspan="5"></TD>
</TR>
<TR>
<TD height="30" colspan="5"></TD>
</TR>
<TR>
<TD height="1" bgcolor="#cccccc" colspan="5"></TD>
</TR>
<TR>
<TD colspan="5" height="5"></TD>
</TR>
<TR>
<TD rowspan="3"></TD>
<TD rowspan="3" bgcolor="#0000ff" width="1"></TD>
<TD height="1" width="700" bgcolor="#0000ff"></TD>
<TD rowspan="3" bgcolor="#0000ff" width="1"></TD>
<TD rowspan="3"></TD>
</TR>
<TR>
<TD width="700"></TD>
</TR>
<TR>
<TD width="700" height="1" bgcolor="#0000ff"></TD>
</TR>
</TABLE>

上記のソースでは表の中に、幅700pxの青色の四角いスペースを作っています。
しかし、ブラウザで見え方を確認しますと。
InternetExplorer、Opera、Sleipnirではうまく表示できますが、
Firefox、Lunascapeではうまく表示できません。

高さは大丈夫なのですが、
<TD height="1" width="700" bgcolor="#0000ff"></TD>
<TD width="700"></TD>
<TD width="700" height="1" bgcolor="#0000ff"></TD>等の、
width="700"が無視され、青色の四角いスペースまでもが、100%表示になってしまいます。

どのようなタグを書けば、どのブラウザでも正しく表示できるようになるのでしょうか?

また、Firefox、Lunascapeのバージョンが古いのですが、
これらの影響もあるのでしょうか?
Firefoxがバージョン1.5.0.2で、Lunascapeがバージョン3.5.4です。

よろしくお願いいたします。

A 回答 (3件)

ごく簡単な例を書いてみました。

それぞれを文字コードShift_JSで同じフォルダーに入れて、sample2.htmlを表示してみてください。
★ウィンドウの幅を小さくしても崩れないか?
  色々なサイズのディスプレイを持つ訪問者に対応できるか?
★スタイルシートを切り替えるとどうなるか
  firefoxの場合:表示→スタイルシートで「スタイルシートを使用しない」「標準」「大きい」を切り替えてみる。(目次とメモが逆になる--おまけ)
★携帯端末での表示は?
  携帯用のスタイルシートは無いけど、スタイルシートのない状態で表示されるはず。もちろん携帯用のスタイルシートを用意しておけば、それが適用される。
★<head></head>内のリンク<link rel=**>を変えずに、色々なページを作っても良いsample3.htmlでは文章を変えるとか
★HTMLのソースが以下に小さいか、ソースを表示してみる。

☆標準スタイルシート(standard.css)は無いので、作って遊んでごらん???

sample2.html______________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル2</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" media="screen" href="./sample2.css">
<link rel="Alternate StyleSheet" type="text/css" media="screen" href="./standard.css" title="標準">
<link rel="Alternate StyleSheet" type="text/css" media="screen" href="./big.css" title="大きい">
</head>
<body>
<h1 id="Top">サンプル2</h1>
<h2>スタイルシートで配置</h2>
<div class="body">
<div id="index" class="note">
<h2>目次</h2>
<ol>
<li><a href="tosa">土佐日記</a></li>
<li><a href="kage">蜻蛉日記</a></li>
<li><a href="isum">和泉式部日記</a></li>
<li><a href="mura">紫式部日記</a></li>
</ol>
</div>
<div id="text">
<p>
ここに本文を書く。段落は&lt;p&gt;&lt;/p&gt;で囲もう。---ソースのこの部分に適当な文章を入れる。----
</p>
<p>
ここにも適当な文章を入れる。
</p>
<p class="wide">
間を空けてみるここにも適当な文章を入れる。
</p>
</div>
<div id="memo" class="note">
<p>
ここにも書いておこう。
</p>
</div>
</div>
<hr>
<p class="pageNavi"><a href="#TOP">TOP</a></p>
<hr>
</body>
</html>

sample2.css___________________
@charset "Shift_JIS";
body {
line-height: 1.4em;
padding: 10px;
background-color: rgb(220,220,220);
}
p{
text-indent: 1em;
margin: 0.4em 0em;
}
body>h1,body>h2{ text-align: center;}
h1 {font-size: 200%;}
h2 {font-size: 170%;}
hr{ display: none;}
#index h2{display: none;}
div.body{
position:relative;
margin: 0px 20%;
border: solid blue 30px;
background-color: white;
}
div.body div#text{
padding: 1em;
}
div.body div#text p.wide{
margin-top: 10em;
padding-top: 5em;
border-top: solid 1px red;
color: green;
}
div.note{
position: absolute;
top: 0px;
width: 25%;
border: 6px rgb(160,255,160) solid;
font-size: 0.8em;
padding: 10px;
}
div.body div#index{
/*left: -37%; */
right: 109%;
border-style: outset;
}
div.body div#memo{
left: 109%;
border-style: inset;
}
p.pageNavi{
margin: 10px 20%;
text-align: center;
}

big.css___________________
@charset "Shift_JIS";
body {
font-size: 16pt;
background-color: white;
}
body>h2{
font-size: 10pt;
}
div.body{
border-color: pink;
}
div.body div#text{
padding: 0.5em;
}
div.body div#text p.wide{
margin-top: 5em;
padding-top: 2em;
}
div.body div#index{
right: 109%;
}
div.body div#memo{
left: 109%;
}
    • good
    • 0
この回答へのお礼

ORUKA1951さん、回答ありがとうございます。

サンプルを試してみました。

CSSでは色々なことができるのですね。
おまけに、ソースが少なくページも軽そうです。

自分なりに調べてみて、
http://www.2step-css.com/や、http://css.uka-p.com/のサイトを見つけました。
どのようにCSSでレイアウトするのかが、なんとなく見えてきました。
サンプルも参考にさせて頂きます。
ただ、テーブルレイアウトとは全く異なるので、
一つのページを作るのが大変そうです。後々は楽そうですが…。

テーブルレイアウトは「良くない」「古い」という意見が多いようですし、
もう少しCSSを勉強し、脱テーブルレイアウトを目指します。

たいへん勉強になりました。
サンプルまで作って頂いて、ありがとうございました。

お礼日時:2008/11/13 21:05

>スタイルシートは簡単な、フォントの装飾などに使用していますが、


>複雑なデザインを作ることができるのでしょうか?
 というか、HTMLでは、そもそもデザイン用に作られているものではない(科学分野)ので、込み入ったデザインをしようとすれば、HTML本来の文書構造はそっちのけで、ブラウザ独自のタグを使ったり、表でもないのに<table>を使ったり、画像を文字代わりに使ったり、間を空けるために意味のない<br>や<p>や空白を使ったり・・・しなければなりません。
 スタイルシートは、HTMLは文書構造にしたがってきちんと書き、スタイルシートでデザインするということですから、
『複雑なデザインをするためにスタイルシートはある』
なのです。
 暇なとき、サンプルを作ってみますね。
    • good
    • 0

そもそも、表でないものをtableを使うのは避けてください。


_______________
14.1 スタイルシートの概説( http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 … )より

・・・・・・略・・・・・・・ Webページのプレゼンテーションを向上させようという志は素晴らしいものではあったが、そのためのテクニックには思わぬ副産物があった。こうしたテクニックは、特定の人々、特定の時代状況でしか成り立たず、すべての人々、すべての時代状況において成り立つものではないのだ。こうしたテクニックの例を挙げよう。

* メーカー独自拡張のHTMLを使う。
* テキストを画像に置き換えて表現する。
* 余白制御のために画像を用いる。
★ ページレイアウトの目的で表を用いる。★
* ・・・略・・・
_____________________
11.1 表の概説( http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 … )
非視覚系メディアでのレンダリングに際して問題を起こすことがあるため、単に文書内容を整形する目的だけで表を用いるべきでない。・・・略・・・こうした問題を最小限に押さえるため、著者は文書の整形には表ではなくスタイルシートを用いるべきである。
_________________
<TABLE>をどうしよう( http://www.asahi-net.or.jp/~wq6k-yn/konomac.html … )より
・・・略・・・「表であることが自然な場合」にtableを使いたいと思うのはもっともなことです【レイアウトのためにtableを使うなどは論外】。
____________________
 耳にタコができるほど、散々聞かされているはずなのに、いまだにtableタグを使ってデザインしようとする人がいるとは、驚きです。ホームページビルダーが最も攻撃される部分かも。
 HTMK4.01 Strictで試したところ、IEのみ、表示されて他のブラウザは崩れます。(SleipnirはレンダリングにIEを使っているので評価できない)。IEは、配置に関しては特にウェブ標準とは異なった挙動をするためIEのあわせて作成したらダメ。IE8以降はIEのウェブ標準に移行する。

★仕様書にも書かれているように、tableは逐次表示を手助けするための方法を取らないといけません。内容サイズによって伸縮します。ですから、この表では、FurefoxやLunascape、Operaの表示が正しい。

★もう、長い間tableを使って配置したことはないのですが、スタイルシートを使えばたちどころに完結するし、HTMLとしても正しい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

多くの人が、tableでレイアウトをしていると思いますが、まさかいけないこととは、全く知りませんでした…。

スタイルシートでレイアウトするのがベストなのですね。

スタイルシートは簡単な、フォントの装飾などに使用していますが、
複雑なデザインを作ることができるのでしょうか?
なんか技術が必要そうです。
その辺がよく分からないので、調べてみます。

また、IEを基準に作成してはダメとは…。たしかに、IEにはバグが多いみたいです。
IEを使う人が多いので、IEを基準に作っていましたが、これからは他のブラウザを基準にしてみます。

お礼日時:2008/11/13 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!